之前没有理解透彻,借助
^和$理解一下,最近又自己测试了一下,终于是明白这个东西了
这篇文章看懂需要一部分正则的基础,我推荐这篇文章正则表达式30分钟入门教程
零宽断言
(?=exp)这个和(?<=exp)都可以看成一个输入文字时的一个光标,就像^和$一样匹配的是一个位置,(?=exp)表示这个光标后面的内容是exp。同理,(?<=exp)表示这个光标前面的内容是exp。把其中的<看成一个箭头就很容易理解了。
比如这段文字中
正则表达式中的零宽断言不容易理解。负向零宽断言也是一样。
使用(?=断).匹配的结果就是
断
断
使用(?<=断).匹配的结果就是
言
言
理解上面这段话后,不难发现(?=断).等同于断,.(?<=断)也等同于断。
看成一个光标就十分帮助理解这个东西
负向零宽断言
同样负向零宽断言也可以这样理解
(?!exp)光标后面的位置不是exp(?<!exp)光标前面的位置不是exp
测试文本
一二三
(?!二). 表示光标后面不是二的字符,匹配结果:
一
三
(?<!二).表示光标前面不是二的字符匹配结果
一
二