正则表达式-前瞻后瞻

169 次阅读 预计阅读时间: 1 分钟


正向先行断言(Positive Lookahead)

场景:在一段文本里找出后面跟着数字的单词 “book”。
输入文本:“I have a book123 and a pen.”
正则表达式book(?=\d+)
输出:“book”
解释:正则表达式匹配到 “book”,且它后面跟着数字,“(?=\d+)” 只是用来做条件判断,不包含在最终匹配结果里。

负向先行断言(Negative Lookahead)

场景:找出后面不跟着数字的单词 “book”。
输入文本:“I have a book and a book123.”
正则表达式book(?!\d+)
输出:“book”
解释:第一个 “book” 后面没有跟着数字,满足负向先行断言的条件,所以被匹配出来。

正向后行断言(Positive Lookbehind)

场景:找出前面是数字的单词 “doll”。
输入文本:“There are 3dolls and 5doll here.”
正则表达式(?<=\d)doll
输出:“doll”
解释:第二个 “doll” 前面是数字 “5”,满足正向后行断言的条件,匹配结果只包含 “doll”。

负向后行断言(Negative Lookbehind)

场景:找出前面不是数字的单词 “doll”。
输入文本:“There are 3dolls and a doll here.”
正则表达式(?<!\d)doll
输出:“doll”
解释:第二个 “doll” 前面不是数字,符合负向后行断言的条件,所以该 “doll” 被匹配到。