正则表达式中的反斜杠

时间:2015-07-24 22:20:16

标签: regex unix

Someone asked如何查找某些文件类型的所有文件,其中一个答案是:

 find /path/to -regex ".*\.\(jpg\|gif\|png\|jpeg\)" > log

我试图更好地理解反斜杠。第一个反斜杠是说将时间段视为字面,而不是模式匹配,是吗?如果是这样,为什么需要第二个反斜杠,第三个呢?似乎第二个反斜杠就是说(作为文字字符。

1 个答案:

答案 0 :(得分:2)

\(\|只是默认的正则表达式(emacs)语法,需要转义括号和替换|。您可以使用高级正则表达式类型,避免过度转义:

find /path/to -regextype posix-egrep -regex ".*\.(jpg|gif|png|jpeg)" > log

根据man find

  

-regextype type

     

更改命令后发生的-regex和-iregex测试所理解的正则表达式语法       线。目前实现的类型是emacs(这是默认值),posix-awk,posix-basic,posix-egrep和posix-extended。