au3 正则参考 -20-单词边界
<!DOCTYPE html>
单词边界:\b
\b 定位符指定匹配必须出现在单词字符 (\w) 和非单词字符 (\W) 之间的边界位置. \b 是零宽度的.
(\w) 为正字符组 [a-zA-Z0-9] 的简记形式 . 包括字母, 数字和下划线的字符; (\W) 为负字符组 [^a-zA-Z0-9] 的简记形式, 包括不为字母, 数字或下划线的其它字符.
\b 匹配也可以出现在字符串开头或结尾处的单词边界. \b 定位点经常用于确保子表达式与整个单词匹配, 例如 \b\w+\b 能完整匹配输入语句中的每个单词.
\b 基础应用
\b 一般应用在需要匹配某一单词字符组成的子串, 但这个子串不能出现在更长的子串中, 例如 \babc\b 匹配 abc , 但不匹配 abcd.
比如要替换掉一段英文中的单词 " to ", 而 " today" 的 to 显然不在替换的范围内, 所以可以用正则表达式 \bto\b 来限定.
举例: 统计以逗号 , 分割的数字串中数值 3 的个数:
字符串: 137,1,33,4,3,6,21,3,35,93,2,98
表达式: \b3\b 匹配单个数字字符 3
匹配结果(标志 3): [0]3 [1]3
结果: 发现 2 个数值 3.
再看下面示例( 没弄明白这个示例中的 \b 是如何定位的 ):
字符串: abc_123中文d3=efg汉字%
表达式: .\b.
匹配结果(标志 3): [0]3中 [1]文 [2]3= [3]g汉
特殊情况
\b 用在正则中, 通常都是表示单词边界的, 但在字符组中, 它表示的是退格键,
即 [a-z\b] 中 \b 表示的是退格键, 而不是单词边界.
以下示例正则表达式 \bare\w\b 用法. 它与任何以子字符串 " are " 开头的单词匹配. 该示例的输出说明 \b 与输入字符串符合指定单词的开头和结尾均匹配.
字符串: area bare arena mare
表达式: \bare\w\b
匹配结果(标志 3): [0]area ; 从位置 0 开始匹配 [1]arena ; 从位置 0 开始匹配
bare 与 mare 虽然包含子串 are , 但都不是单词的开头子串 , 不符合 \b 匹配模式 .
表达式分析:
模式 | 说明 |
---|---|
\b | 在单词边界处开始匹配. 确定匹配条件的子字符串位于单词的开头位置 . |
are | 匹配子字符串 " are " . 指定表达式的匹配条件 . |
\w | 匹配前面指定条件的 0 个或多个单词字符. 这里只有 2 个单词符合指定条件 . |
\b | 在单词边界处结束匹配. |
下面示例可选多条件的 \b 应用:
字符串:
if(ifdo)
dosome();
else
doelse();
表达式: \b(if|while|else|void|int)\b
匹配结果(标志3): [0]if [1]else
表达式分析:
模式 | 说明 |
---|---|
\b | 在单词边界的开始位置匹配 |
(if|while|else|void|int) | 一个 5 选项的捕获组 , | 为选项分隔符, 此例字符串仅有 2 个单词符合这里指定的选项 . |
\b | 在单词边界的结束位置结束匹配 |
发表评论
木有头像就木JJ啦!还木有头像吗?点这里申请属于你的个性Gravatar头像吧!