我不能说它在 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
使用()
或者(()|())?
我一直认为这对一切都有效。
答案1
GNU find 默认使用 emacs 正则表达式,您可以使用-regextype
选项更改该类型(参见 man find)。
如果你使用-regextype posix-egrep
你的表达似乎有效。然后你也可以将模式简化为^.+(jpg|gif|exe)$
使用 emacs:。find . -regex '.+\(jpg\|gif\|exe\)$'
请参阅emacs 手册的这一部分针对那些特定的正则表达式规则。您需要进行转义|
,并且()
不要将其视为文字。
答案2
在 emacs 正则表达式中(
,|
和)
是文字除非转义,这与所有其他正则表达式格式完全相反。
你的表情就像^.+\.\(jpg\|exe\|gif\)$
。