Я не могу сказать, что он работает в Windows, но, насколько я понимаю, это регулярное выражение правильное и то, как я его написал (кроме, возможно, ^
в начале)
Из http://www.velocityreviews.com/forums/showpost.php?p=382944&postcount=3
^.+\.((jpg)|(gif)|(exe))$
Когда я бегу
find -regex '^.+\.((jpg)|(gif)|(exe))$'
мой exe не отображается, когда я пишу
find -regex '^.+\.exe$'
Оно делает. Почему не find -regex
хочу использовать ()
или (()|())?
Я всегда думал, что это справедливо для всего.
GNU find по умолчанию использует регулярные выражения emacs, вы можете изменить этот тип с помощью -regextype
вариант (см. поиск человека).
Если вы используете -regextype posix-egrep
ваше выражение, кажется, работает. Тогда вы также, вероятно, могли бы уменьшить шаблон до ^.+(jpg|gif|exe)$
С emacs: find . -regex '.+\(jpg\|gif\|exe\)$'
. Видеть этот раздел руководства по emacs для этих конкретных правил регулярных выражений. Вам нужно бежать |
и ()
чтобы они не были буквальными.
В регулярных выражениях emacs (
, |
и )
буквально если только с экранированием, это полная противоположность всем другим форматам регулярных выражений.
Ваше выражение работает как ^.+\.\(jpg\|exe\|gif\)$
.