Есть ли максимальная длина текста для параметра Select-String -Pattern?
У меня есть список из ~ 500 слов (имен таблиц базы данных), которые объединены в одну строку. Длина строки составляет ~ 12 500 символов.
'TABLE1|TABLE2|TABLE3|...
У меня нет сообщений об ошибках, но могу ли я быть уверен, что это сработает?
2 ответа
Здесь параметр -Pattern
для Select-String
принимает string[]
.
-Pattern <string[]>
Required? true
Position? 0
Accept pipeline input? false
Parameter set name (All)
Aliases None
Dynamic? false
Теперь максимальная длина строки составляет 2147483647 байт. Вы можете получить максимальную емкость строки:
[text.stringbuilder]::new().MaxCapacity
Это означает, что максимальная длина RegEx Select-String
может составлять 2147483647 байт (но, скорее всего, вы достигнете нехватки памяти до этого момента ;-)
В дополнение к теории, вот тест, который может вас успокоить.
Сначала мы просто создаем текстовый файл с 26 строками, каждая из которых содержит 1 символ английского алфавита, повторяемый 40 000 раз.
$(
97..122 | foreach {"$([char]$_)" * 40000}
) | out-file c:\temp\longstringtest.txt -Encoding utf8
Теперь мы протестируем поиск строки из 20000 символов b.
$pattern = "b" * 20000
If(Select-String -path C:\temp\longstringtest.txt -Pattern $pattern){"Found it!"}
Found it!
Мы можем поднять его до 40000
$pattern = "b" * 40000
If(Select-String -path C:\temp\longstringtest.txt -Pattern $pattern){"Found it!"}
Found it!
Просто чтобы убедиться, что это действительно работает
$pattern = "ba" * 40000
If(Select-String -path C:\temp\longstringtest.txt -Pattern $pattern){"Found it!"} # No output
Мне не хватило смелости протестировать максимальный размер, указанный Васифом, но я подтвердил, что до 200000 также работают нормально.
Похожие вопросы
Новые вопросы
regex
Регулярные выражения предоставляют декларативный язык для сопоставления шаблонов в строках. Они обычно используются для проверки, синтаксического анализа и преобразования строк. Поскольку регулярные выражения не полностью стандартизированы, все вопросы с этим тегом должны также включать тег, определяющий применимый язык программирования или инструмент.