如何让正则表达式 'or groups' 像 (foo|bar) 与 find -regex 一起工作? (OS X)
how to get regex 'or groups' like (foo|bar) working with find -regex? (OS X)
假设我想使用正则表达式查找所有 .jpg 和 .png 图像,我正在尝试这样做:
find . -regex ".*\.(jpg|png)"
但它不起作用(没有结果,即使存在 jpg 和 png 文件)。
现在,如果我只使用 jpg
或 png
而不是 (jpg|png)
部分,它可以正常工作。另外,如果我使用 \(jpg\)
它确实找到了 .jpg 文件,所以显然我必须转义括号(不知道为什么)。但是我无法使 "jpg OR png" 正常工作,转义 |
符号(因此在我的正则表达式中使用 \(jpg\|png\)
)也不起作用。
仅供参考:我在 OS X Yosemite.
上使用 find
在 OSX find
上使用 -E
选项以启用扩展正则表达式:
find -E . -regex ".*\.(jpg|png)"
根据man find
:
-E
Interpret regular expressions followed by -regex and -iregex primaries as extended
(modern) regular expressions rather than basic regular expressions (BRE's).
假设我想使用正则表达式查找所有 .jpg 和 .png 图像,我正在尝试这样做:
find . -regex ".*\.(jpg|png)"
但它不起作用(没有结果,即使存在 jpg 和 png 文件)。
现在,如果我只使用 jpg
或 png
而不是 (jpg|png)
部分,它可以正常工作。另外,如果我使用 \(jpg\)
它确实找到了 .jpg 文件,所以显然我必须转义括号(不知道为什么)。但是我无法使 "jpg OR png" 正常工作,转义 |
符号(因此在我的正则表达式中使用 \(jpg\|png\)
)也不起作用。
仅供参考:我在 OS X Yosemite.
上使用find
在 OSX find
上使用 -E
选项以启用扩展正则表达式:
find -E . -regex ".*\.(jpg|png)"
根据man find
:
-E
Interpret regular expressions followed by -regex and -iregex primaries as extended
(modern) regular expressions rather than basic regular expressions (BRE's).