跳转到内容

正则表达式/POSIX 现代正则表达式

来自维基教科书,开放的书籍,为开放的世界

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.("
华夏公益教科书