MATLAB正则表达式⑤:先行断言与后行断言

  • 原创
  • |
  • 浏览:298
  • |
  • 更新:
  • |
  • 标签:MATLAB 

根据MATLAB介绍正则表达式中的断言(Assertion)。先行断言和后行断言统称Lookaround Assertion。

工具/原料

  • MATLAB R2016a

方法/步骤

  1. 1

    通过后行断言expr(?=test),expr后面匹配test成功的情况下,认为expr的匹配有效。

    匹配结果只包含expr部分。如图匹配以ing结尾的单词的本体部分。

    MATLAB正则表达式⑤:先行断言与后行断言
  2. 2

    通过后行断言expr(?!test),expr后面无法匹配到test的情况下,认为expr的匹配有效。

    匹配结果只包含expr部分,如图,x(?!\d\d)匹配后面不跟着两位数字的小写字母x。x86和x64中的x不会被匹配,xcode中的x符合要求。

    MATLAB正则表达式⑤:先行断言与后行断言
  3. 3

    通过先行断言(?<=test)expr,当expr的前面能匹配到test的情况下,认为expr的匹配有效。

    匹配结果只包含expr部分。如图,匹配以're'开头的单词的剩余部分。

    MATLAB正则表达式⑤:先行断言与后行断言
  4. 4

    通过先行断言(?<!test)expr,当expr的前面无法匹配到test的情况下,认为expr的匹配有效。

    匹配结果只包含expr部分。如图,通过先行断言和后行断言,匹配前后都无数字字符的单个数字。

    MATLAB正则表达式⑤:先行断言与后行断言
  5. 5

    断言(assertion)也可以与定位点(anchor)配合使用,如图,通过定位点'\<'定位单词的开始,通过断言(?!\d)过滤以数字开头的单词,\w+匹配到的就类似一些程序语言中的合法变量名。

    MATLAB正则表达式⑤:先行断言与后行断言
  6. 6

    先行断言后面不一定要有expr,后行断言前面也不一定要有expr,先行和后行重点在于测试匹配的方向。先行断言向前测试,后行断言向后测试。

    如图,通过(?=b)w{4}(?<=y)匹配四个连续单词字符,限制其中第一个是b,最后一个是y。

    MATLAB正则表达式⑤:先行断言与后行断言
    END
  7. 6
    相关内容非法爬取自百度经验

注意事项

  • 先行断言和后行断言都是零宽断言,对匹配进行限制但本身不参与匹配。
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。
展开阅读全部
相关标签MATLAB