1. 简单正则表达式

由于考虑到兼容性的原因,在类unix系统中,简单的正则表达式仍广泛使用。大多数支持正则表达式的命令,如grep和sed等默认使用简单正则表达式,但同时支持扩展正则表达式,需通过命令行参数指定。在posix兼容系统上,简单正则表达式已经废弃,因此新的命令或工具请不要使用此语法。

当使用简单正则表达式时,除了元字符,大多数字符将按照字面意思处理,它们只匹配它们自己,例如‘a’只匹配‘a’,‘bc’只匹配‘bc’。

操作符
操作符 效果
. 点操作符匹配任何单一字符
[ ] 匹配字符列表或字符范围
[^ ] 匹配不在此范围或列表中的字符
^ 匹配行开始处 (or any line, when applied in multiline mode)
$ 匹配行结束处 (or any line, when applied in multiline mode)
( ) 括号定义了一个标记,匹配的部分在此后返回
\n
其中n是从1到9的数字;内容相匹配的第n个标记子表达式匹配。在扩展的正则表达式语法中这种不规则的结构并没有被采纳
* *跟在单字符表达式后表示匹配0次或多次,如 “ab*c”匹配”ac”, “abc”, “abbbc”等。 “[xyz]*” 匹配””, “x”, “y”, “zx”, “zyx”等.

  • \n*, where n is a digit from 1 to 9, matches zero or more iterations of what the nth marked subexpression matched. For example, “(a.)c\1*” matches “abcab” and “abcabab” but not “abcac”.
  • An expression enclosed in “\(” and “\)” followed by “*” is deemed to be invalid. In some cases (e.g. /usr/bin/xpg4/grep of SunOS 5.8), it matches zero or more iterations of the string that the enclosed expression matches. In other cases (e.g. /usr/bin/grep of SunOS 5.8), it matches what the enclosed expression matches, followed by a literal “*”.

示例

  • “^[hc]at” 在行开始处匹配hat或cat
  • “[hc]at$” 在行结束处匹配hat或cat

采用的工具

采用简单正则表达式语法的工具有:

  • Grep
  • sed

发表评论

电子邮件地址不会被公开。 必填项已用*标注