我不能说它在Windows上工作,但从我的理解这个正则expression式是正确的,我将如何写它(除了可能在^开始)
从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默认查找使用emacs正则expression式,您可以使用-regextype选项更改该types(请参阅man find)。
如果你使用-regextype posix-egrep你的expression似乎工作。 那么你也可以将模式简化为^.+(jpg|gif|exe)$
用emacs: find . -regex '.+\(jpg\|gif\|exe\)$' find . -regex '.+\(jpg\|gif\|exe\)$' 。 有关这些特定的正则expression式规则,请参阅本节的emacs手册 。 你需要逃避| 和()他们不是字面的。
在emacs中,regexps ( , |和)是字面的, 除非被转义,这与所有其他正则expression式格式完全相反。
您的expression方式为^.+\.\(jpg\|exe\|gif\)$ 。