Командная строка findstr с регулярным выражением - PullRequest
1 голос
/ 01 мая 2020

Мне нужно выполнить поиск по всем файлам в каталоге и подкаталогах, чтобы найти любое из чисел в reg exp. В основном в нашем коде у нас есть блоки кода, основанные на определенных номерах проекта. Мне нужно найти эти блоки по номеру проекта. Это регулярное выражение делает то, что мне нужно, но я не могу заставить его работать в командной строке

([^0-9]|^)(56|14|2)([^0-9]|$)

Я проверял это на https://www.freeformatter.com/regex-tester.html с этой строкой "If session.projid = 56 и затем снова 14 или что-то еще "

Я пытаюсь это в командной строке

findstr /s /R /C:"([^0-9]|^)(56|14|2)([^0-9]|$)" *.*

Но никаких результатов, и я знаю, что должно быть. Заранее благодарен за любую помощь в этом.

1 Ответ

0 голосов
/ 01 мая 2020

См. эти документы :

FINDSTR не поддерживает чередование с символом канала (|). Несколько регулярных выражений могут быть разделены пробелами, точно так же, как и разделение нескольких слов. (при условии, что вы не указали литеральный поиск с помощью / C), но это может быть бесполезно, если само регулярное выражение содержит пробелы.

В вашем случае вы можете использовать \< / \> границы слов с каждым числом, и вы можете указать все свои варианты после пробела:

findstr /s /r "\<56\> \<14\> \<2\>" *.*
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...