1.6.2. 正则表达式
正则表达式被使用在许多文本处理工具中。它们类似 shell 的通配符,但更加复杂和强大。
正则表达式描述要匹配的模式,它是由文本字符和元字符构成的。
元字符仅仅是带有特殊含义的字符。它们有两种主要的形式,BRE 和 ERE ,使用哪种取决于上述的文本工具。
表 1.24. BRE 和 ERE 中的元字符
BRE | ERE | 正则表达式的描述 |
---|---|---|
\ . [ ] ^ $ | \ . [ ] ^ $ | 通用的元字符 |
+ \? ( ) { } | | BRE 独有的“\ ”转义元字符 | |
+ ? ( ) { } | | ERE 独有的不需要“\ ”转义的元字符 | |
c | c | 匹配非元字符 “c ” |
\c | \c | 匹配一个字面意义上的字符 “c ”,即使 “c ” 本身是元字符 |
. | . | 匹配任意字符,包括换行符 |
^ | ^ | 字符串的开始位置 |
$ | $ | 字符串的结束位置 |
\< | \< | 单词的开始位置 |
\> | \> | 单词的结束位置 |
[abc…] | [abc…] | 匹配在 “abc… ” 中的任意字符 |
[^abc…] | [^abc…] | 匹配除了 “abc… ” 中的任意字符 |
r | r | 匹配零个或多个 “r ” |
r+ | r+ | 匹配一个或多个 “r ” |
r\? | r? | 匹配零个或一个 “r ” |
r1|r2 | r1|r2 | 匹配一个 “r1 ” 或 “r2 ” |
(r1|r2) | (r1|r2) | 匹配一个 “r1 ” 或 “r2 “ ,并作为括号内的正则表达式 |
emacs
中的正则表达式基本上是 BRE 但含有 ERE 中的元字符 “+
” 和 “?
” 。因此,在 emacs
中没必要使用 “\
” 来转义它们。
grep(1) 可以使用正则表达式来进行文本搜索。
尝试下列例子
$ egrep 'GNU.*LICENSE|Yoyodyne' /usr/share/common-licenses/GPL
GNU GENERAL PUBLIC LICENSE
GNU GENERAL PUBLIC LICENSE
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
提示 | |
---|---|