Linux正则表达式-单词

也许你已经发现,有时匹配完整的单词很难。例如,如果想匹配模式"book",搜索会命中包含单词"book"和"books"的行,而且还有单词"bookish"、"handbook"和"booky"。很显然可以在"book"前后使用空格来限制匹配情况。
□book□

然而,这个表达式只匹配单词"book",它会丢掉它的复数形式"books" 。为了匹配单数或复数单词,可能要使用星号元字符:
□books*□

这样就可以匹配"book" 或"books" 。然而,如果单词后面有句点、逗号、问好或引号时就不会匹配"book" 。

当将星号和通配符元字符(.)结合起来使用时,可以匹配任意字符的零次或多次出现。在前面的示例中,可以像下面这样编写比较完整的正则表达式:
□book.*□

这个表达式匹配字符串"book" ,其后面跟有任意个字符或没有字符,最后跟着空格。下面是将要匹配的几行:
Here are the books that you requested
Yes, it is a good book for children
It is amazing to think that it was called a "harmful book" when
once you get to the end of the book, you can't believe

(注意只有第二行可以和固定字符串"□book□"匹配。)表达式"□book.*□"匹配包含类似与单词"booky" 、"bookworm" 和"bookish"的行。通过使用不同的修饰符可以排除这些匹配中的两种。问号(?)是元字符的扩展集的一部分,匹配前面表达式的0次或1次出现。因此,表达式:
□book.?□

将与"book,"、"books, "和"booky"匹配,而不与"bookish" 和"bookworm" 匹配。为了排除类似"booky"这样的单词,我们可以使用字符类来指定想要匹配的位置的所有字符。而且,因为元字符问号在sed中不可用,我们必须求助于字符类,这些在后面将会看到。

尝试用正则表达式包括一切并不实际,尤其是在使用grep时,有时最好使表达式保持简单并允许遗漏。然而,当在sed中使用正则表达式进行替换时,就需要注意的是使用的表达式应该完整。在本站之后的文章中我们将会看到用于搜索单词更全面的正则表达式。

参考资料:http://www.linuxawk.com/communication/434.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值