3月302016
au3 正则参考 -63-负回顾后发断言
<!DOCTYPE html>
负回顾后发断言 (?<!断言模式)
对于负回顾后发断言 (?<!断言模式) 来说, 当断言模式匹配成功时, (?<!断言模式) 匹配失败; 当断言模式匹配失败时, (?<!断言模式) 匹配成功. 断言模式为 0 宽度.
断言模式为任何有效的正则表达式模式. 若要成功匹配, 则断言模式的匹配项不得在输入字符串当前位置的左侧出现, 并且任何不匹配断言模式的子字符串不包含在匹配结果中.
负回顾后发断言通常定义在正则表达式的开头, 它们定义的模式预先排除后面字符串中的匹配项. 它们还用于在捕获组中的最后一个或多个字符不得为与该捕获组正则表达式的断言模式相匹配的其中一个或多个字符时限制回溯. 回顾后发断言匹配时向左搜索断言模式.
下面示例匹配除周末之外的一周的任何一天(也就是不包含星期六和星期日).
字符串:
Monday February 1, 2010,
Wednesday February 3, 2010
Saturday February 6, 2010
Sunday February 7, 2010
Monday February 8, 2010
表达式: (?<!Saturday |Sunday )\b\w+ \d{1,2}, \d{4}\b
匹配结果(标志 3):
[0]February 1, 2010
[1]February 3, 2010
[2]February 8, 2010
表达式分析:
模式 | 说明 |
---|---|
\b | 在单词边界处开始匹配. |
\w+ | 匹配一个或多个后跟空格字符的单词字符, 注意 + 后有一个空格! 由此可见空格字符可以不用 \s 表示. |
\d{1,2}, | 匹配一个或两个十进制数字, 并且后跟一个逗号. |
\d{4}\b | 匹配单词结束边界前的四个十进制数字, 并结束一轮匹配. |
(?<!Saturday |Sunday ) | 如果字符串以 “Saturday ” 或者 “Sunday ”(后跟一个空格)开头, 则 (?<!Saturday |Sunday ) 匹配成功. \b\w+ \d{1,2}, \d{4}\b 存在匹配项后 , 负回顾 ( 向后 ) 检查匹配项前面的断言模式是否匹配 , 如果断言模式匹配成功, 则 \b\w+ \d{1,2}, \d{4}\b 的匹配项不记录到表达式的最终匹配结果中 . 否则匹配项保存到最终匹配结果中 . |
扫描二维码,在手机上阅读
发表评论
木有头像就木JJ啦!还木有头像吗?点这里申请属于你的个性Gravatar头像吧!