1.6.2. 正则表达式

正则表达式被使用在许多文本处理工具中。它们类似 shell 的通配符,但更加复杂和强大。

正则表达式描述要匹配的模式,它是由文本字符和元字符构成的。

元字符仅仅是带有特殊含义的字符。它们有两种主要的形式,BREERE ,使用哪种取决于上述的文本工具。

表 1.24. BRE 和 ERE 中的元字符

BREERE正则表达式的描述
\ . [ ] ^ $ \ . [ ] ^ $ 通用的元字符
+ \? ( ) { } |BRE 独有的“\”转义元字符
+ ? ( ) { } |ERE 独有的不需要“\”转义的元字符
cc匹配非元字符c
\c\c匹配一个字面意义上的字符 “c”,即使 “c” 本身是元字符
..匹配任意字符,包括换行符
^^字符串的开始位置
$$字符串的结束位置
\<\<单词的开始位置
\>\>单词的结束位置
[abc…][abc…]匹配在 “abc…” 中的任意字符
[^abc…][^abc…]匹配除了 “abc…” 中的任意字符
rr匹配零个或多个 “r
r+r+匹配一个或多个 “r
r\?r?匹配零个或一个 “r
r1|r2r1|r2匹配一个 “r1” 或 “r2
(r1|r2)(r1|r2)匹配一个 “r1” 或 “r2“ ,并作为括号内的正则表达式

emacs 中的正则表达式基本上是 BRE 但含有 ERE 中的元字符+” 和 “?” 。因此,在 emacs 中没必要使用 “\” 来转义它们。

grep(1) 可以使用正则表达式来进行文本搜索。

尝试下列例子

  1. $ egrep 'GNU.*LICENSE|Yoyodyne' /usr/share/common-licenses/GPL
  2. GNU GENERAL PUBLIC LICENSE
  3. GNU GENERAL PUBLIC LICENSE
  4. Yoyodyne, Inc., hereby disclaims all copyright interest in the program
[提示]提示

参见第 9.2.7 节 “有颜色输出的命令”