反后顾匹配,也可称为 “否定逆序环视”。前面章节介绍的正前瞻和反前瞻均是要求模式匹配时,需要右侧紧随特定文本,或紧随的不是特定文本。而反后顾与正前瞻方向相反。
反后顾会查看某个模式在从左至右的文本流的后面没有出现。同样,它有一个小于号(<),提醒后顾的是哪个方向。
正后顾匹配语法:
(?<!expresion)
例如:匹配所有带有 “world” 文本,并且前面不紧随 “hello” 文本。
在 RegexBuddy 中,运行 “(?<!hello) world” 模式,如下图:
上图中,第二行、第三行中的 “world” 文本被匹配,因为它的前面没有紧跟 “hello” 文本;而第一行中的 “world” 文本匹配失败,因为它们前面紧跟 “hello” 文本。
在 RegexBuddy 中输入如下文本:
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
使用正则表达式替换功能,在每个数字的前面添加逗号。注意:数字的前面必须不紧随数字。模式如下:
(?<!\d)(\d)
运行效果如下图: