跳到内容

正则表达式/简单正则表达式

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

简单正则表达式 语法在基于 Unix 的系统中广泛使用,用于向后兼容的目的。大多数支持正则表达式的 Unix 实用程序,如 grepsed,默认使用它,同时提供对扩展正则表达式的支持(使用命令行参数,见下文)。这种语法在 POSIX 兼容系统中已过时,新实用程序不应使用它。

使用简单正则表达式语法时,大多数字符(元字符除外)都被视为字面字符,只匹配自身(例如,“a” 匹配 “a”,“(bc” 匹配 “(bc” 等)。

运算符
运算符 效果
. 点运算符匹配任何单个字符。
[ ] 方括号允许将单个字符与字符列表或字符范围进行匹配。
[^ ] 补码方括号允许匹配不在字符列表或字符范围内的单个字符。
^ 脱字符(^)锚匹配行的开头(或在多行模式下匹配任何行)
$ 美元符($)锚匹配行的结尾(或在多行模式下匹配任何行)
( ) 圆括号用于定义标记的子表达式。匹配的文本部分可以在以后调用。
\n 其中 n 是 1 到 9 之间的数字;匹配第 n 个标记的子表达式匹配的内容。这种不规则的结构在扩展正则表达式语法中没有被采用。
* 单个字符表达式后跟 "*" 匹配该表达式的零个或多个副本。例如,“ab*c” 匹配 “ac”,“abc”,“abbbc” 等。“[xyz]*” 匹配 “”,“x”,“y”,“zx”,“zyx” 等等。
  • \n*,其中 n 是 1 到 9 之间的数字,匹配第 n 个标记的子表达式匹配内容的零个或多个迭代。例如,“(a.)c\1*” 匹配 “abcab” 和 “abcabab”,但不匹配 “abcac”。
  • 用 “\(" 和 "\)” 括起来的表达式后跟 "*" 被认为是无效的。在某些情况下(例如,SunOS 5.8 的 /usr/bin/xpg4/grep),它匹配括起来的表达式匹配的字符串的零个或多个迭代。在其他情况下(例如,SunOS 5.8 的 /usr/bin/grep),它匹配括起来的表达式匹配的内容,后跟一个字面上的 "*”。

示例

  • "^[hc]at"
    • 匹配 hatcat,但只匹配行的开头。
  • "[hc]at$"
    • 匹配 hatcat,但只匹配行的结尾。

在工具中的使用

[编辑 | 编辑源代码]

使用这种正则表达式语法的工具和语言包括

华夏公益教科书