正则表达式——单词边界

      断言

 正则表达式中的大多数结构匹配的文本会出现在最终的匹配结果中(一般用group(0)可以得到),但是也有些结构并不是真正匹配文本,而只负责判断在某个位置左/右侧的文本是否符合要求,这种结构被称为断言(assertion)。常见的断言有三类:单词边界、行起始/结束位置、环视。

  在文本处理中经常可能进行单词替换,比如吧一段文本中的 row 都替换成 line 。一般想到的是调用字符串的替换方法,直接替换row。 在不同语言中这些方法给不相同,但差别不大。

    替换前:The row we are looking for is row 10.

    替换后:The line we are looking for is line 10.

  不过,这样替换也可能会造成意想不到的后果。

    替换前:...tomorrow I will wear in brown standing in row 10 next to the rowdy guy...

    替换后:...tomorline I will wear in blinen standing in line 10 next to the linedy guy...

  不仅所有单词 row 都被替换成了 line,其他单词内部的 row 也被替换成了 line,这显然不是我们想要的结果。

  要解决这个问题,必须有办法确定单词 row,而不是字符串 row。为解决这类问题,正则表达式提供了专用的单词边界(world boundary),记为\b。它匹配的是“单词边界”位置,而不是字符。也就是说,\b能够匹配这样的位置:一边是单词字符,另一边不是单词字。

转载于:https://www.cnblogs.com/gaara0305/p/10027343.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值