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

au3 正则参考 -56-非捕获组

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

<!DOCTYPE html> RegExp

非捕获组: (?:子表达式)

非捕获组不会捕获由子表达式匹配的子字符串, 子表达式为任何有效正则表达式模式. 当限定符应用到捕获组, 如果组捕获的子字符串并非所需时, 通常会使用非捕获组构造.

如果正则表达式包含嵌套的分组构造, 则外部非捕获组构造不适用于内部嵌套组构造.

可以通过以下方式之一使用非捕获组:

使用 (?:子表达式) 语言元素. 此元素可防止应用组中捕获匹配的子字符串. 但它不在任何嵌套的组中禁用子字符串捕获.

在正则表达式模式中禁用所有未命名或隐式捕获. 使用此选项时, 只能捕获使用 (?子表达式) 语言元素定义的命名组匹配的子字符串.

 

下面示例捕获组与非捕获组的最终匹配结果的区别, 两个正则表达式都用于捕获整个句子:

字符串: This is one sentence. This is another.

捕获组表达式: \b(\w+[;,]?\s?)+[.?!]

匹配结果(标志 4):
[0]=> [0]This is one sentence.
[0]=> [1]sentence
[1]=> [0]This is another.
[1]=> [1]another

查找匹配时, 捕获分组 ([0]=> [0], [1]=> [0]) 和捕获对象 ([0]=> [1] , [1]=> [1]) 都将用捕获内容来填充.
此时对捕获组 (\w+[;,]?\s?) 应用 + 限定符, 从而使得正则表达式模式可与句子中的每个单词匹配. 否则它将匹配句子中的最后一个单词.

当你对子表达式应用限定符, 并且对捕获的单词 ([0]=> [1] , [1]=> [1]) 不感兴趣时, 应禁用组捕获, (?:子表达式) 语言元素可避免捕获你不感兴趣.

非捕获组表达式: \b(?:\w+[;,]?\s?)+[.?!]

匹配结果(标志 4):
[0]=> [0]This is one sentence.
[1]=> [0]This is another.

表达式分析:

模式 子模式 说明
\b   在单词边界处开始匹配.
(?:   定义 (\w+[;,]?\s?) 为非捕获组 , 不捕获句子字符串中后跟标点符号单词 .
(\w+[;,]?\s?)+   匹配 1 或多个以下子表达式捕获的组合. 匹配结果用于定义第一个捕获组, 这是必需的, 以便匹配后跟可选标点符号的单词字符, 直至正则表达式引擎到达句子末尾.
  \w+ 匹配一个或多个单词字符.
  [;,]? 匹配 0 个或 1 个(单词后跟的)逗号, 或分号
  \s? 匹配 0 个或 1 个(逗号, 或分号后跟的)空白字符
[.?!]   匹配 1 个句号, 或 1 个问号, 或 1 个感叹号.

 

下面的示例包括非捕获组的正则表达式. 请注意输出不包含任何已捕获组( 即没有匹配单词的捕获组 ):

字符串: This is a short sentence.

表达式: (?:\b(?:\w+)\W)+.

匹配结果(标志 1, 或 2, 或 3, 或 4): This is a short sentence.

正则表达式 (?:\b(?:\w+)\W)+. 匹配由句号终止的语句. 因为正则表达式重点在句子, 而不是个别单词, 所以分组构造使用非捕获组模式, 以避免捕获单词字符.

模式 子模式 说明
(?:\b(?:\w+)\W)+.   非捕获组模式. 不将匹配的文本分配给捕获的组. 组内子模式分述如下:
  (?: 定义子表达式为非捕获组.
  \b 在单词边界处开始匹配.
  (?:\w+) 定义表达式为非捕获组. 匹配 1 个或多个单词字符, 不将匹配的文本分配给捕获组.
  \W 匹配 0 个或多个非单词字符.
  . 转义句点字符, 匹配句点本身. 并结束匹配过程 .





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

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

扫描二维码,在手机上阅读
上一篇::au3 正则参考 -57-反向引用
下一篇:au3 正则参考 -55-普通组与命名组混合编号规则

热门文章

相关文章

  • au3 正则参考 -59-捕获组应用限定符
  • au3 正则参考 -71-回溯控制
  • au3 正则参考 -08-Unicode 类-块
  • au3 正则参考 -70-回溯
  • au3 正则参考 -17-字符串或行结尾
取消回复

发表评论

亲,头像对么?

98 + 89 =

提交中,请稍候……


木有头像就木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