Строка не является допустимым регулярным выражением - PullRequest
0 голосов
/ 28 января 2019

У меня есть папка с DNS-файлами .zone.

Я пытаюсь вернуть все файлы и строку с IP-адресом, который выглядит как 172.20.*.

Я использую следующее:

Get-ChildItem -Recurse -Path 'C:\Root' | Select-String -Pattern '*172.20.*' | group | select name

, ноэто возвращает:

Select-String: Строка * 172.20. * не является допустимым регулярным выражением: синтаксический анализ "* 172.20. *" - Квантификатор {x, y} ничего не следует за.

Я попытался использовать -SimpleMatch чехол в моем Select-String, но безуспешно.Заключение строки в двойные кавычки также не работает.

Если я использую фактический текст в качестве шаблона, он работает без проблем.

Где моя проблема?

1 Ответ

0 голосов
/ 28 января 2019

Как и в сообщении об ошибке: *172.20.* не является допустимым регулярным выражением.Это шаблон с подстановочными знаками, который можно использовать с оператором -like, но не с Select-String.* в регулярном выражении является модификатором, который не может стоять самостоятельно, он требует чего-то, к чему он применяется.Эквивалент регулярного выражения подстановочного знака * (соответствует нулю или более символов) равен .*.Но поскольку регулярные выражения (в отличие от шаблонов подстановочных знаков) по умолчанию не привязаны, вам не нужно добавлять их в начало и конец шаблона, чтобы совпадение работало.

Либо измените выражение на фактическоерегулярное выражение:

... | Select-String -Pattern '172\.20\.' | ...

или измените код, чтобы использовать совпадения с подстановочными знаками вместо совпадений с регулярным выражением:

Get-ChildItem -Recurse  -Path 'C:\Root' | Where-Object {
    Get-Content $_.FullName | Where-Object { $_ -like '*172.20.*' }
} | Select-Object -Expand Name

Использование -SimpleMatch не сработало с вашим подходом, поскольку -Pattern '*172.20.*' -SimpleMatchбудет искать буквенную (под) строку *172.20.* (со звездочками), которая, вероятно, отсутствует в ваших файлах.Это сработало бы, если бы вы удалили шаблоны из шаблона:

... | Select-String -Pattern '172.20.' -SimpleMatch | ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...