4.17. 字符介绍——分组操作

未匹配的标注

4.17 字符介绍——分组操作

小括号() 被用来对正则表达式进行分组并建立优先级。它们是元字符扩展集的一部分。

假如一个文本文件里面一个公司名被称作 “BigOne” 或 “BigOne Computer”:

BigOne(□Computer)?

这个表达式将匹配字符串 “BigOne” 本身或者后面再跟一次字符串 “□computer”。

类似的,如果一个术语有时被完全拼出来,有时又缩写:

$ egrep "Lab(oratorie)?s" mail.list
Bell Laboratories, Lucent Technologies
Bell Labs

你可以使用小括号() 再加一个竖线(|) 来对可选的操作进行分组。在下面的例子中,我们用它来指定单词 “company” 的单数和复数的匹配。

compan(y|ies)

在大部分版本的 sed 和 grep 里,都不能对小括号() 内的字符组应用量词,但在所有版本的 egrep 和 awk 中都可以,注意到这一点非常重要。

注意:不能应用量词,并不代表 sed 中不能用小括号() ,但是必须要对小括号() 进行转义。比如:

$ echo 'Big is important' | sed 's/\(Big\).*/\1 is nothing/g'
Big is nothing

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 查看所有版本


暂无话题~