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

au3 正则参考 -51-普通捕获组

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

<!DOCTYPE html> RegExp

普通捕获组: (子表达式)

子表达式为任何有效正则表达式模式. 捕获组编号按正则表达式中左括号从左到右的顺序从 1 开始自动编号. 编号为 0 的捕获是整个正则表达式模式匹配的文本.

正则表达式可以反向引用普通捕获组. 语法 \0 - \9 , 在同一正则表达式中引用匹配的子表达式, 其中数字是未命名捕获组的编号.

 

普通捕获组返回一个组收集对象, 该对象包含多个组对象, 这些对象表示捕获组的单个匹配项. 集合中的第一个组对象(对应数组索引 [0])表示整个表达式的匹配项. 此对象后面的每个对象均表示一个捕获组的结果.

可以使用组属性检索集合中的各个组收集的项对象. 在集合中按未命名组的序号位置来检索未命名组, 也可以按命名组的名称或序号位置来检索命名组.

未命名捕获组将首先在集合中显示, 并将按照未命名捕获在正则表达式模式中出现的顺序从左至右对它们进行索引. 在对未命名捕获进行索引后, 再将按照命名捕获组在正则表达式模式中出现的顺序从左至右对它们进行索引.

若要确定在特定的正则表达式匹配方法返回的集合中哪些编号的组可用, 可以调用实例的组编号. 若要确定集合中哪些命名的组可用, 可以调用实例的组名称. 这两种方法都对分析任何正则表达式找到匹配的通用程序特别有用.

组收集项可以按索引(对于命名组, 可以按名称)访问各个组对象.

 

下面的示例定义一个正则表达式, 该表达式使用分组构造捕获日期的年, 月, 日部分.

字符串: Born: July 28, 1989

表达式: \b(\w+)\s(\d{1,2}),\s(\d{4})\b

匹配结果(标志 2):
[0]July 28, 1989
[1]July
[2]28
[3]1989

表达式分析:

模式 说明
\b 在单词边界处开始匹配.
(\w+) 匹配一个或多个单词字符. 这是第一个捕获组. 对应数组索引 [1] , 月份
\s 与空白字符匹配
(\d{1,2}) 匹配一个或两个十进制数字. 这是第二个捕获组. 对应数组索引 [2] 日数
, 匹配逗号
\s 与空白字符匹配
(\d{4}) 匹配四个十进制数字. 这是第三个捕获组. 对应数组索引 [3] 年号
\b 在单词边界处结束匹配

 

下面示例使用嵌套的分组构造来将子字符串捕获到组中. 正则表达式将子字符串 ab 分配给第一个捕获组, 并将子字符串 b 分配给第二个捕获组.

字符串: abc

表达式: (a(b))c

匹配结果(标志 2):   [0]abc        [1]ab        [2]b

表达式分析:

模式 子模式 说明
(a(b))   匹配字符 ab . 这是第一捕获组. 对应 [1].
  (b) 匹配字符 b . 这是第二捕获组. 对应 [2].
c   匹配字符 c .

 

以下示例匹配文本中重复单词的正则表达式. 正则表达式模式的两个捕获组( 对应 [0]=> [0]that that 和 [1]=> [0]the the )表示重复单词的两个实例.

字符串: He said that that was the the correct answer.

表达式: (\w+)\s(\1)\W

匹配结果(标志 4):
[0]=> [0]that that
[0]=> [1]that
[0]=> [2]that
[1]=> [0]the the
[1]=> [1]the
[1]=> [2]the

表达式分析:

模式 说明
(\w+) 匹配一个或多个单词字符. 这是第 1 捕获组
\s 与空白字符匹配.
(\1) 与第 1 捕获组捕获中的字符串匹配. 这是第 2 捕获组. 该示例将匹配值指定到捕获组, 以便重复单词的开始位置可从返回数组中检测.
\W 匹配包括空格和标点符号的一个非单词字符. 这样可以防止正则表达式模式匹配第 1 捕获组单词开头的单词. 防止重复匹配 .

普通捕获组编号规则

编号规则指的是以数字为捕获组进行编号的规则, 在普通捕获组或命名捕获组单独出现的正则表达式中, 编号规则比较清晰,

在普通捕获组与命名捕获组混合出现的正则表达式中, 捕获组的编号规则稍显复杂. 参见普通捕获组与命名捕获组混合编号

需要说明的是, 编号为 0 的捕获组, 指的是整体正则表达式的匹配结果.

如果没有显式为捕获组命名, 即没有使用命名捕获组, 那么需要按数字顺序来访问所有捕获组. 在只有普通捕获组的情况下, 捕获组的编号是按照 "(" 出现的顺序, 从左到右, 从 1 开始进行编号的 .

表达式: (\d{4})-(\d{2}-(\d\d)) 组编号:

上面的正则表达式可以用来匹配格式为 yyyy-MM-dd 的日期, 为了在下表中得以区分, 月和日分别采用了 \d{2} 和 \d\d 这两种写法.

用以上正则表达式匹配字符串: 2016-02-01. 选择标志 4, 测试匹配结果为:

组编号 组模式 匹配结果
0 (\d{4})-(\d{2}-(\d\d)) [0]=> [0]2016-02-01
1 (\d{4}) [0]=> [1]2016
2 (\d{2}-(\d\d)) [0]=> [2]02-01
3 (\d\d) [0]=> [3]01

 






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

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

扫描二维码,在手机上阅读
上一篇::au3 正则参考 -52-命名捕获组
下一篇:au3 正则参考 -50-分组子表达式

热门文章

相关文章

  • au3 正则参考 -36-量词限定符
  • au3 正则参考 -05-负字符组
  • au3 正则参考 -01-工作方式
  • au3 正则参考 -07-U码类-块列表
  • au3 正则参考 -13-数字字符
取消回复

发表评论

亲,头像对么?

78 + 56 =

提交中,请稍候……


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


    站点统计
    • 运行时间: 20254 天
    • 日志总数: 365 篇
    • 评论数量: 7237 条
    • 微语数量: 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