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

au3 正则参考 -44-忽略空白

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

<!DOCTYPE html> RegExp

忽略正则表达式的内部空白: (?x)

默认正则表达式模式中的空白非常重要; 它会强制正则表达式引擎与输入字符串中的空白字符相匹配. 因此, 正则表达式 \b\w+\s 和 "\b\w+ "(+ 号后留有一个空格)是大致等效的正则表达式. 此外, 正则表达式模式中出现编号符号 (#) 时, 它被解释为匹配 # 的原义字符.

选项 (?x) 可以更改此默认行为, 如下所示:

                正则表达式模式中的非转义的空白将被忽略.

                 编号符号 (#) 被解释为注释文本的开头, 而不是原义字符. 正则表达式模式中的所有文本, 从 # 字符到字符串的结尾都解释为注释文本.

但在下列情况下, 不会忽略正则表达式中的空白字符, 即使使用 (?x) 选项也是如此:

                始终按原义解释字符内的空格. 例如, 正则表达式的字符组模式 [ .,;:] 匹配任意单个空白字符, 句号, 逗号, 分号或冒号.

                加括号的限定符内不允许有空格, 如 {n}、{n,} 和 {n,m} . 例如 \d{1. 3} , 因为它包含一个空白字符, 所以正则表达式模式与任何从 1 到 3 位数的数字序列都不匹配.

引入语言元素的字符序列内不允许有空格. 例如:

                语言元素 (?:子表达式) 表示非捕获组, 并且该元素的 (?: 部分不能嵌入空格. 模式 (? :子表达式) 在运行时引发参数异常, 因为正则表达式引擎不能分析该模式, 且模式 ( ?:子表达式) 与子表达式不匹配.

                语言元素 \p{name} 表示一个 Unicode 类别或命名块, 它不能在元素的 \p{ 部分中嵌入空格. 如果你包括了空格, 则该元素会在运行时引发参数异常.

 

启用 (?x) 选项有助于简化通常很难分析和理解的正则表达式. 它提高了正则表达式的可读性.

 

下面的示例使用选项 (?x) 来忽略模式中空白.

字符串: This is the first sentence! Is it the beginning of a literary masterpiece? I think not. Instead, it is a nonsensical paragraph.

表达式: (?x)\b (? ( (?>\w+) ,?\s? )+ [.!?] )? # 匹配整个输入文本字符串

匹配结果(标志 4):
[0]=> [0]This is the first sentence!
[0]=> [1]sentence
[1]=> [0]Is it the beginning of a literary masterpiece?
[1]=> [1]masterpiece
[2]=> [0]I think not.
[2]=> [1]not
[3]=> [0]Instead, it is a nonsensical paragraph.
[3]=> [1]paragraph

表达式分析:

模式 子模式 说明
(?x)   忽略正则表达式中包含的空白字符.
\b   在单词边界处开始.
(?   匹配左括号 “(” 的零或一个匹配项. 源字符串没有 ( 符号, 但测试添加一个 ( 符号, 不能返回匹配 ?
((?>\w+),?\s?)+   一次或多次匹配一个或多个单词字符, 零或一个逗号以及零或一个空白字符的组合
  (?>\w+),? 匹配一个或多个单词字符, 后跟零或一个逗号. 当匹配单词字符不回溯
  \s? 匹配零个或一个空白字符.
[.!?])?   与后无右括号或后跟一个右括号 “)” 的三个标点符号 . ! ? 匹配

 

下面的示例使用 i 以及 x 选项启用区分大小写, 并忽略正则表达式模式中间的空白.

字符串: double dare double Double a Drooling dog The Dreaded Deep

表达式: \b(D\w+)(?ix) \s (d\w+) \b

匹配结果(标志 1): [0]Drooling          [1]dog

表达式分析:

模式 说明
\b 在单词边界处开始.
(D\w+) 匹配大写字母 D 开头的一个或多个单词字符. 这是第一个捕获组.
(?ix) 此后, 进行不区分大小写的比较 , 并忽略正则表达式模式中的空白 .
\s 与空白字符匹配.
(d\w+) 匹配小写字母 d 开头的一个或多个单词字符.
\b 在单词边界处结束.

 

以下示例中的正则表达式 \b(?ix: d \w+)\s 使用分组构造中的内联选项, 以启用不区分大小写的匹配, 并在识别所有以字母 d 开头的单词时忽略模式中的空白.

字符串: Dogs are decidedly good pets.

表达式: \b(?ix: d \w+)\s

匹配结果(标志 3):
[0]Dogs
[1]decidedly

表达式分析:

模式 说明
\b 在单词边界处开始匹配.
(?ix: d \w+) 使用不区分大小写的匹配并忽略此模式中的空白空间, 匹配一个或多个以字符 d 开头的单词字符 .
\s 匹配一个空白符, 并结束一轮匹配过程 .

 






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

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

扫描二维码,在手机上阅读
上一篇::au3 正则参考 -45-表达式注释
下一篇:au3 正则参考 -43-多行模式

热门文章

相关文章

  • 新编winapi大全
  • au3 正则参考 -36-量词限定符
  • au3 正则参考 -60-断言
  • Au3-API教程
  • au3 正则参考 -22-连续匹配
取消回复

发表评论

亲,头像对么?

51 + 79 =

提交中,请稍候……


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