Regex: positive lookahead 先行断言____ 后行断言(lookbehind)

 

先行断言:

/a(?=b)/  ,positive lookahead,a的后方必须是b才行

/a(?!b)/   ,negative lookahead,a的后方必须不是b才能匹配

 如下图示:  来自:https://regexper.com/#%2F%5Cd%28%3F%3D%5BAB%5D%29%2F

 

一个例子(转自:http://darkk6.blogspot.com/2017/03/regexp-lookahead-lookbehind.html

 

(?<!\d)\d{6,8}(?!\d),來解釋看看這一段到底在找什麼東西。

先將其拆為:(?<!\d) \d{6,8} (?!\d) 三段,很快就可以看出,要找的東西是「6~8 個連續數字」,但是「前面不能有數字(Negative lookbehind)」以及「後面不能跟著數字(Negative lookahead)」。

由於 {6,8} 是贪心的 Greedy ,會盡量多取,因此就可以限制找到的數字數量是在 6~8 ,並且排除連續 9 個(以上)數字的部分了。

 

posted @ 2019-07-04 10:33  jimy1  阅读(473)  评论(0编辑  收藏  举报
Total Visits
AmazingCounters.com