绿色风's Blog
澳门的百家乐|专注AutoIT(Au3)
  • 首页
  • 流●年
  • 笔●记
    • 学习随记
    • 源码示例
  • 脚●本
    • UDF(收集)
    • 工作室UDF
    • 工具●教程
    • 教程之GDI
  • 微●语
  • 作●品
  • 下●载
  • 关于我
3月302016

au3 正则参考 -80-表达式的递归匹配

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

表达式的递归匹配: (?R) 或 (?x)

相对于反向引用来说, 反向引用是在匹配过程中对匹配到的字符串内容进行引用, 而递归匹配是对表达式进行引用. 有时我们需要用正则表达式来分析一个计算式中的括号配对情况. 比如使用表达式 \( [^)]* \) 或者 \( .*? \) 可以匹配一对小括号. 但是如果括号内还嵌有一层括号的话 , 如 ( ( ) ) , 则这种写法将不能正确匹配, 得到的结果是 ( ( ) . 类似情况的还有 HTML 中支持嵌套的标签如 等.

表达式使用 (?R) 或 (?x)(x=组编号) 递归进入整个正则表达式. 具体格式如下表:

格式 说明 格式 说明
(?R) 对整个表达式的递归引用 (?R1) 或 (?R2) 对指定分组的递归引用.
(?1) 或 (?2) 对指定分组的递归引用. (?R) 或 (?R'named') 对指定命名分组的递归引用

 

下面示例匹配嵌套未知层次的 "小括号对" :

字符串: If StringInStr(FileGetAttrib($current & "\" & $file), "D") And ($file <> "." Or $file <> "..")

表达式: \(([^()]|(?R))*\)

匹配结果(标志 4):
[0]=> [0](FileGetAttrib($current & "\" & $file), "D")
[0]=> [1]"
[1]=> [0]($file <> "." Or $file <> "..")
[1]=> [1]"

表达式分析:

模式 子模式 说明
\(   转义字符 ( 为本身原意字符 , 匹配一个左园括号 .
([^()]|(?R))   两个选项的可选表达式 , 分述如下 :
  [^()] 选项 1 , 负字符组 . 匹配一个排除左 , 右园括号的其它任意字符
  | 选项分隔符 .
  (?R) 选项 2 , 递归进入整个正则表达式 .
*   0 次或多次匹配选项表达式的结果匹配项 .
\)   转义字符 ) 为本身原意字符 , 匹配一个右园括号 .

 

几个正在表达式递归示例模式:

表达式 等效的表达式1 等效的表达式2 可以匹配
(\w)(?1) (\w)(\w)   ab
(?1)(\w(?2))(\d) (?1)(\w(\d))(\d) (\w(\d))(\w(\d))(\d) a1b23
(\w(?1)?) (\w(\w(?1)?)?) (\w+) ghjk5……
\(([^()]|(?R))*\) \(([^()]|\(([^()]|(?R))*\))*\)   (a*(c+2))

 





本文固定链接: http://elebm.com/post-225.html

blogger
该日志由 绿色风 于2016-3-30 19:27 Wednesday发表在 工具●教程 分类下。
版权所有:《绿色风's Blog》 → 《au3 正则参考 -80-表达式的递归匹配》;
除特别标注,本博客所有文章均为原创. 互联分享,尊重版权,转载请以链接形式标明本文地址;
本文标签:
et_highlighter51
上一篇::朋友!!请不要透支你的朋友圈!!!
下一篇:au3 正则参考 -72-非回溯子表达式

热门文章

  • 显示器亮度,对比度,色温缩放调节,笔记本亮度调节
  • 显示器 EDID 读取,生产日期和分辨率
  • 字符串打乱顺序
  • 简单的文本替换伪原则工具
  • Au3中仿高阶函数的使用示例

相关文章

  • au3 正则参考 -08-Unicode 类-块
  • au3 正则参考 -32-加号限定符
  • au3 正则参考 -45-表达式注释
  • au3 正则参考 -41-不区分大小写
  • au3 正则参考 -90-正则表达式替换
取消回复

发表评论

亲,头像对么?

48 + 79 =

提交中,请稍候……


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


    站点统计
    • 日志总数: 302 篇
    • 评论数量: 91 条
    • 微语数量: 40 条
    • 附件总量: 305 件
  • 打赏"绿色风"



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

  • Autoit V3 脚本交流群

      常驻群1:477266297
      常驻群2:40672266


  • 标签

      QQ UDF IP 吐嘈 AU3 Enum 枚举常量 AU3小技巧 数组 进度条 对象 删除重复行 趣图 Hex 获取网络时间 swf UTC 日期 时间 POST 三目运算 三元判断 小技巧 GDI 收款 SQL 工具 映像 MV 劫持 API 教程 CHM 按键 GDI教程 杯举 按时间 笑一笑 2014 网络用语 2015 免费 元宵 视图 listview au3示例 美女 壁纸 游戏 差异加密 加密 串口 WebAPI IE TTS 环境yo 过去 验证码 图片分割 VBS HiFi Mp3 免费空间 QQchat 机器人 win10 电影 彩票 入门教程 帮助文档 事件 编码 CMD MD5 打赏 翻译 作品 下载 多线程 ListViewRead 赞助 鼠标 窗口尺寸 分享 汇编注入 干货 复制 移动 gizp 乐一乐 正则 autoit wav波形文件 播放 authcode 鼠标HOOK 键盘HOOK 剪切板 复制图片 文件遍历 JDK 网卡 GetAdaptersInfo 内存 CPU 转码
  • 链接

    • AU3中文论坛
    • 易捷博客
    • 简爱博客
    • 胡言乱语-小胡老师
    • 又淘气.我的世界
    • 御坂网络
    • 大师兄U盘装系统
    • 顺网小哥'S Blog
    • 猛牛哥的博客
    • 墨涩颓废网
  • 存档

    • 2019年9月(1)
    • 2019年8月(1)
    • 2019年5月(2)
    • 2019年4月(2)
    • 2019年3月(3)
    • 2019年2月(1)
    • 2018年11月(1)
    • 2018年10月(1)
    • 2018年9月(3)
    • 2018年8月(4)
    • 2018年4月(2)
    • 2018年3月(1)
    • 2018年1月(6)
    • 2017年12月(1)
    • 2017年11月(8)
    • 2017年7月(2)
    • 2017年6月(1)
    • 2017年5月(2)
    • 2017年4月(8)
    • 2017年3月(2)
    • 2017年2月(3)
    • 2017年1月(3)
    • 2016年12月(5)
    • 2016年11月(1)
    • 2016年10月(1)
    • 2016年9月(2)
    • 2016年8月(2)
    • 2016年7月(4)
    • 2016年6月(3)
    • 2016年5月(2)
    • 2016年4月(3)
    • 2016年3月(58)
    • 2016年1月(6)
    • 2015年12月(7)
    • 2015年11月(3)
    • 2015年10月(10)
    • 2015年9月(9)
    • 2015年8月(11)
    • 2015年7月(11)
    • 2015年6月(1)
    • 2015年5月(6)
    • 2015年4月(14)
    • 2015年3月(9)
    • 2015年2月(6)
    • 2015年1月(12)
    • 2014年12月(19)
    • 2014年11月(18)
    • 2014年10月(12)
Copyright © 2013 绿色风's Blog. Powered by emlog. Theme by 射雕天龙. 鄂ICP备15002104号-1 sitemap