明明白白正则表达式之零宽断言

之前没有理解透彻,借助^$理解一下,最近又自己测试了一下,终于是明白这个东西了
这篇文章看懂需要一部分正则的基础,我推荐这篇文章正则表达式30分钟入门教程


零宽断言


(?=exp)这个和(?<=exp)都可以看成一个输入文字时的一个光标,就像^$一样匹配的是一个位置,(?=exp)表示这个光标后面的内容是exp。同理,(?<=exp)表示这个光标前面的内容是exp。把其中的<看成一个箭头就很容易理解了。


比如这段文字中

正则表达式中的零宽断言不容易理解。负向零宽断言也是一样。

使用(?=断).匹配的结果就是


使用(?<=断).匹配的结果就是


理解上面这段话后,不难发现(?=断).等同于.(?<=断)也等同于
看成一个光标就十分帮助理解这个东西

负向零宽断言

同样负向零宽断言也可以这样理解

  • (?!exp)光标后面的位置不是exp
  • (?<!exp)光标前面的位置不是exp

测试文本

一二三

(?!二). 表示光标后面不是的字符,匹配结果:


(?<!二).表示光标前面不是的字符匹配结果


测试环境

posted @   康舒服冰红茶  阅读(110)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示