zoukankan      html  css  js  c++  java
  • 明明白白正则表达式之零宽断言

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


    零宽断言


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


    比如这段文字中

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

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


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


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

    负向零宽断言

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

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

    测试文本

    一二三
    

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


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


    测试环境

    未经授权商用禁止,转载请标明出处,附上原文链接 个人能力有限,若有不足之处欢迎各位大佬指出
  • 相关阅读:
    字符序列(characts)
    装载问题(load)
    哈密顿路
    犯罪团伙
    回溯算法
    维修机器人
    旅行计划
    皇后游戏
    运输
    亲身实测可用的java实现wordxlsxpdf文件下载功能
  • 原文地址:https://www.cnblogs.com/pong137/p/14720209.html
Copyright © 2011-2022 走看看