au3 正则参考 -44-忽略空白
<!DOCTYPE html>
忽略正则表达式的内部空白: (?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 | 匹配一个空白符, 并结束一轮匹配过程 . |
发表评论
木有头像就木JJ啦!还木有头像吗?点这里申请属于你的个性Gravatar头像吧!