以这个命令为例:
find . -regex ".*\.\(cpp\|h\)"
Run Code Online (Sandbox Code Playgroud)
这将在您的目录中找到所有 .h 和 .cpp 文件。句点字符“.” 在正则表达式中通常表示“任何字符”。要使其仅匹配实际句点,您必须使用反斜杠字符 '\' 对其进行转义。
在这种情况下,给定一个具有特殊含义的字符,您必须对其进行转义以获取它所代表的实际字符。
现在,取括号和“或”栏,分别是字符 '(', ')' 和 '|'。这些也有特殊含义,用于对正则表达式进行分组。但是,要获得特殊含义,必须使用反斜杠对字符进行转义!没有反斜杠,字符具有它所代表的实际字符的含义。
为什么是“.” 与 '(', ')' 和 '|' 区别对待?