正则表达式/POSIX 现代正则表达式
外观
< 正则表达式
更现代的“扩展”正则表达式通常可以在现代 Unix 实用程序中使用,方法是在命令行中添加“-E”标志。
POSIX 扩展正则表达式在语法上与传统的 Unix 正则表达式类似,但也有一些例外。添加了以下元字符
- + — 匹配最后一个“块”一次或多次 - “ba+” 匹配 “ba”、 “baa”、 “baaa” 等等
- ? — 匹配最后一个“块”零次或一次 - “ba?” 匹配 “b” 或 “ba”
- | — 选择(或集合并)运算符:匹配运算符之前或之后的表达式 - “abc|def” 匹配 “abc” 或 “def”。
此外,反斜杠被移除:\{...\} 变成 {...},而 \(...\) 变成 (...). 例子
- "[hc]+at" 匹配 "hat"、"cat"、"hhat"、"chat"、"hcat"、"ccchat" 等等。
- "[hc]?at" 匹配 "hat"、"cat" 和 "at"
- "([cC]at)|([dD]og)" 匹配 "cat"、"Cat"、"dog" 和 "Dog"
由于字符 '(', ')', '[', ']', '.', '*', '?', '+', '^' 和 '$' 用作特殊符号,因此如果它们是字面意思,则必须对其进行转义。这是通过在它们前面加上 '\' 来完成的,因此如果它们是字面意思,则也必须以这种方式对其进行转义。例子
- "a\.(\(|\))" 匹配字符串 "a.)" 或 "a.("