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

au3 正则参考 -04-正字符组

作者:绿色风   发布:2016-3-24 12:51 Thursday   分类:   阅读:4518次   评论:0条  

<!DOCTYPE html>

RegExp

正字符组: [...]

正字符组指定一个字符列表, 其中的任何一个字符可以出现在输入字符串中, 以便进行匹配. 可以包括一个或多个文本字符, 转义字符或字符类的任意组合.
此字符列表可以单独指定若干字符, 例如 [abc] 表示匹配一个字符 " a " 或一个 " b " 或一个 " c " .

字符组支持由连字符 " - " 表示的字符范围. 当 " - " 前后字符构成范围时, 要求前面的字符码位小于后面的字符码位.
例如 [a-z] 表示任意一个小写字母. 而使用 [z-a] 则会提示表达式错误.

大部分正则中有特殊意义的转义字符, 匹配其本身时需转义, 但在 [...] 内是不需要转义的. 必须转义的只有 " \ " , " [ " 和 " ] " .
而 "^" 出现在正字符组 [...] 开始位置则需要转义(否则将表示为排除型字符组), 例如 [\^.$^{\[(|)*+?-\\] 的 \^ 即转义 ^ 字符匹配本身; 出现在其它位置则不需要转义.

还有一点并不常见, \b 在字符组外表示单词边界, 但是在字符组内 [\b] 则表示退格符.

下表列出了一些正字符组的正则表达式示例:

模式 说明
[0-9] 匹配 0~9 中任意一个数字, 等价于[0123456789]
[aeiou] 匹配所有元音字母.
[\p{P}\d] 匹配所有标点符号和十进制数字字符.
[\s\p{P}] 匹配所有空白和中, 英文标点符号.
[ab5@] 匹配 "a" 或 "b" 或 "5" 或 "@"

 

下面的示例定义包含字符 a 和 e 的正字符组, 以使输入字符串必须包含单词 grey 或 gray 且后跟另一个单词以便进行匹配:

字符串: The gray wolf jumped over the grey wall.

表达式: gr[ae]y\s\S+?[\s\p{P}]

匹配结果(标志 3):
[0]gray wolf
[1]grey wall.

表达式分析:

模式 说明
gr 匹配文本字符 " gr ".
[ae] 匹配一个 " a " 或 " e " 字符
y\s

匹配文本字符 " y ", 并且后跟一个空格符.

\S+? 匹配一个或多个非空白字符(但尽可能少), 即匹配字符 y 后空格跟随的一个单词 .
[\s\p{P}] 匹配空白字符或标点符号.

 

下面的示例匹配以任何大写字母开头的单词. 子表达式字符组 [A-Z] 表示从 A 到 Z 的大写字母范围:

字符串: A city Albany Zulu maritime Marseilles

表达式: \b[A-Z]\w*\b

匹配结果(标志 3):
[0]A
[1]Albany
[2]Zulu
[3]Marseilles

正则表达式 \b[A-Z]\w*\b 分析:

模式 说明
\b 匹配单词的开始位置.
[A-Z] 正字符组. 匹配从 A 到 Z 的任意一个大写字符.
\w* 匹配 0 个或多个单词字符.
\b 匹配单词的结束位置.

 

示例 1 -- 连续 2 个相同的字符组

字符串: abc123

表达式: [bcd][bcd]

匹配结果: bc (选择标志 1, 或 2, 或 3 均可)
2 个相同的正字符组, 一个匹配 字符 b , 一个匹配字符 c .

 

示例 2 -- 字符组加限制符

字符串: ab|ac

表达式: [abc|]+

匹配结果: ab|ac (选标志 1, 2, 3, 4 均可)
这里的匹配结果能返回原字符串, 是因为使用了元字符 + 的原因.

 

示例 3

[0-9][0-9] 匹配字符串 Windows 2003 时, 匹配成功, 匹配的结果为 20 (测试标志 1 或 2).
2 个相同的数字字符组, 一个匹配数字 2, 另一个匹配数字 0.

 

下面是一个更复杂的表达式: \(?0\d{2}[) -]?\d{8}.

这个表达式可以匹配几种格式的电话号码, 像 (010)88886666, 或 022-22334455, 或 02912345678 等.

下面将这个表达式拆分为若干子模式对它进行一些分析:

模式 说明
\(? 转义元字符 ( , 以便匹配圆开括号本身, ? 限制出现 1 次或不出现
0 匹配一个数字 0
\d{2} 匹配 2 个数字
[) -]? 匹配一个 ), 或一个 - , 或一个空格. ? 限制出现 1 次或不出现
\d{8} 匹配 8 个数字

 

常见错误用法:

因为 [...] 本身表示的就是字符之间的 或 关系, 因此在 [...] 中使用 | 表示 或 关系是错误的.

举例: [a|b|c] 表示的是 a 或 b 或 c 或 | 中的任意一个字符. 正确写法应为 [abc|].






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

blogger
该日志由 绿色风 于2016-3-24 12:51 Thursday发表在 分类下。
版权所有:《绿色风's Blog》 → 《au3 正则参考 -04-正字符组》;
除特别标注,本博客很多文章均为原创. 互联分享,尊重版权,转载请以链接形式标明本文地址;
本文标签:

扫描二维码,在手机上阅读
上一篇::au3 正则参考 -05-负字符组
下一篇:au3 正则参考 -03-字符类

热门文章

相关文章

  • au3 正则参考 -56-非捕获组
  • au3 正则参考 -08-Unicode 类-块
  • au3 正则参考 -52-命名捕获组
  • au3 正则参考 -31-星号限定符
  • au3 正则参考 -17-字符串或行结尾
取消回复

发表评论

亲,头像对么?

26 + 28 =

提交中,请稍候……


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