绿色风's Blog
专注AutoIT(Au3)
  • 首页
  • 流●年
  • 笔●记
    • 学习随记
    • 源码示例
  • 脚●本
    • UDF(收集)
    • 工作室UDF
    • 工具●教程
    • 教程之GDI
  • 作●品
  • 下●载
  • 情怀ExcelTip
3月302016

au3 正则参考 -60-断言

作者:绿色风   发布:2016-3-30 11:27 Wednesday   分类:工具●教程   阅读:12894次   评论:0条  

<!DOCTYPE html> RegExp

位置定义

对于字符串 "a5" , 由两个字符 "a" 、 "5" 以及三个位置组成的, 这一点对于正则表达式的匹配原理理解很重要.

左右方向定义

正则表达式引擎尝试匹配输入字符串时, 按从左到右的顺序执行搜索. 因此字符串的左侧为顺序(正)方向 , 而右侧则为逆序(负)方向 .

断言

断言的作用相当于对所在位置加了一个附加条件, 只有满足这个条件, 断言模式才能匹配成功. 断言的难点在于找到这个"位置".

断言只进行断言模式的匹配, 不占有字符, 即匹配到的内容不保存到最终的匹配结果中, 是零宽度的. 断言匹配的最终结果就是一个位置.

断言按照方向划分有预测先行(顺序)断言和回顾后发(逆序)断言两种, 按照是否匹配有肯定(正)和否定(负)两种, 组合起来就有四种断言形式(见下表).

预测先行断言相当于在当前位置右侧附加一个条件, 而回顾后发断言相当于在当前位置左侧附加一个条件.

表达式 说明
(?<=断言模式) 正回顾后发断言 -- 所在位置左侧能够匹配断言模式.
(?<!断言模式) 负回顾后发断言 -- 所在位置左侧不能匹配断言模式.
(?=断言模式) 正预测先行断言 -- 所在位置右侧能够匹配断言模式.
(?!断言模式) 负预测先行断言 -- 所在位置右侧不能匹配断言模式.

 

举例说明:

正回顾后发断言示例:
(?<=Windows )\d+ 在匹配 Windows 2003 时, 匹配结果为 “2003”. \d+ 表示匹配一个以上的数字, 而 (?<=Windows ) 相当于一个附加条件, 表示所在位置左侧必须为 "Windows ", 它所匹配的内容并不计入匹配结果. 同样的正则在匹配 Office 2003 时, 匹配失败, 因为这里任意一串数字子串的左侧都不是"Windows ".

正回顾后发断言示例:
(?<=\d{4})\w+ 在匹配 "1234abcdef" 时, 将匹配除前 4 个数字之外的其它剩余字符, 捕获匹配项的前面必须有 4 个十进制数字 .

正预测先行断言示例:
Windows (?=NT|XP) 在匹配 "Windows 98, Windows NT, Windows 2000" 时, 将只匹配 "Windows NT" 中的 "Windows ", 其它 "Windows " 字符后面都不符合"后跟 NT 或 XP" 的条件 因此都不被匹配.

负预测先行断言示例:
(?!1)\d+ 在匹配 "123" 时, 匹配结果为 "23". \d+ 匹配一个以上的数字, 但是附加条件 (?!1) 要求所在位置右侧不能是 1 , 所以匹配成功是从位置 1 开始, 匹配 "23" .

混合使用示例:
(?<=\d{4})\w+(?=\d{4}) 在匹配 "1234abcd3456" 时, 将匹配除了前 4 个数字和后 4 个数字之外的字母字符 abcd

 






本文固定链接: http://www.jianyiit.com/post-217.html

blogger
该日志由 绿色风 于2016-3-30 11:27 Wednesday发表在 工具●教程 分类下。
版权所有:《绿色风's Blog》 → 《au3 正则参考 -60-断言》;
除特别标注,本博客很多文章均为原创. 互联分享,尊重版权,转载请以链接形式标明本文地址;
本文标签:

扫描二维码,在手机上阅读
上一篇::au3 正则参考 -61-正预测先行断言
下一篇:au3 正则参考 -59-捕获组应用限定符

热门文章

相关文章

  • au3 正则参考 -59-捕获组应用限定符
  • au3 正则参考 -45-表达式注释
  • au3 正则参考 -22-连续匹配
  • 新编winapi大全
  • au3 正则参考 -46-匹配 Unicode
取消回复

发表评论

亲,头像对么?

30 + 85 =

提交中,请稍候……


木有头像就木JJ啦!还木有头像吗?点这里申请属于你的个性Gravatar头像吧!


    站点统计
    • 运行时间: 20254 天
    • 日志总数: 365 篇
    • 评论数量: 7238 条
    • 微语数量: 6 条
    • 附件总量: 388 件
  • 逝出的青春

  • 打赏"绿色风"



      扫码关注本站公众号 可搜本站内容

  • Autoit V3 脚本交流群

      常驻群1:905774875
      常驻群2:40672266


  • 链接

    • AU3中文论坛
    • Excel资料库
    • 完美者博客
    • 顺网小哥'S Blog
    • 猛牛哥的博客
    • 网吧系统下载
  • 分类

    • 流●年(66)
    • 笔●记(0)
    • 脚●本(0)
    • 作品(21)
    • 学习随记(51)
    • 源码示例(68)
    • UDF(收集)(26)
    • 工作室UDF(30)
    • 工具●教程(62)
    • 教程之GDI(24)
Copyright © 2013 绿色风's Blog. Powered by emlog. Theme by 射雕天龙. 鄂ICP备2021011689号-1 鄂公网安备42102302000078号 sitemap