博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何用断言更好地实现替换重复出现的单词?
阅读量:3523 次
发布时间:2019-05-20

本文共 597 字,大约阅读时间需要 1 分钟。

内容来自于涂伟忠 极客课程,仅限于学习交流使用,如有侵权及时删除。 

最常见的断言有三种:单词的边界、行的开始或结束、环视。

  • 单词的边界是使用 \b 来表示,这个比较简单。而多行模式下,每一行的开始和结束是使用 ^ 和 $ 符号。
  • 如果想匹配整个字符串的开始或结束,可以使用 \A 和 \z,它们不受匹配模式的影响。
  • 最后就是环视,它又分为四种情况:肯定逆向环视、否定逆向环视、肯定顺序环视、否定顺序环视。在使用的时候记住一个方法:有左尖括号代表看左边,没有尖括号是看右边,而感叹号是非的意思

单词边界(Word Boundary)

例子:替换下面的tom为jerry

tom asked me if I would go fishing with him tomorrow.

很明显,结果不是我们想要的,因为tomorrow中也包含tom。为此我们需要引入正则中的单词边界。

单词的组成一般可以用元字符 \w+ 来表示,\w 包括了大小写字母、下划线和数字(即 [A-Za-z0-9_])。那如果我们能找出单词的边界,也就是当出现了\w 表示的范围以外的字符,比如引号、空格、标点、换行等这些符号,我们就可以在正则中使用\b 来表示单词的边界。 \b 中的 b 可以理解为是边界(Boundary)这个单词的首字母。

这样匹配之后还是发型有问题,那是因为要完全匹配,请看下图

因为正确的匹配是 

转载地址:http://kxhqj.baihongyu.com/

你可能感兴趣的文章
hadoop3.0+spark2.0两台云服务器集群环境配置。
查看>>
记第一次面试经历
查看>>
网站实现qq登录(springboot后台)
查看>>
简单的用户头像修改功能(springboot后台)
查看>>
springboot+mybatis实现分页
查看>>
leetcode332. 重新安排行程
查看>>
为什么局域网网段不同不能通信?
查看>>
itchat微信助手,kaggle 电影数据集分析,基于内容的电影推荐
查看>>
认识和使用JWT
查看>>
通过springboot框架,自己动手实现oauth2.0授权码模式认证
查看>>
条件表达式于运算符的点点滴滴的积累
查看>>
最短路径最基本的三种算法【此后无良辰】
查看>>
class的点点滴滴的总结
查看>>
vector 的点点滴滴的总结
查看>>
测试用例
查看>>
自动化测试学习步骤
查看>>
自动化测试需要掌握的知识
查看>>
HTTP协议
查看>>
Python问题总结01
查看>>
Python小程序——冒泡排序
查看>>