Regex заходит слишком далеко, нужно его ограничить - PullRequest
0 голосов
/ 18 мая 2019

У меня есть следующий набор данных:

C:\folder1\log.txt
C:\folder1\folder2\log.txt
C:\folder1\folder2\folder3\log.txt

Я пытаюсь использовать регулярные выражения для сопоставления файлов log.txt, которые могут появляться в списке на многих уровнях глубины (папки, которые, в свою очередь, будут иметьразные имена).

Итак, предположив, что я хочу сопоставить все файлы log.txt, которые имеют глубину «две папки», я пробую следующее регулярное выражение, но оно не работает для меня.

(.*\\){0,2}log\.txt

Он не работает специально, потому что он соответствует каждой строке, а не только той, которая имеет «две папки глубиной».

Как я могу ограничить эту работу так, как ожидается?Чего мне не хватает?

1 Ответ

1 голос
/ 18 мая 2019

Используйте отрицательный набор символов вместо ., чтобы можно было сопоставить любой символ, кроме обратной косой черты, и обязательно привязать шаблон к началу строки:

^([^\\]*\\){0,2}log\.txt

https://regex101.com/r/Q9JBcl/1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...