接下來的四個(gè)用于查找在某些內(nèi)容(但并不包括這些內(nèi)容)之前或之后的東西,也就是說它們像\b
,^
,$
那樣用于指定一個(gè)位置,這個(gè)位置應(yīng)該滿足一定的條件(即斷言),因此它們也被稱為零寬斷言。最好還是拿例子來說明吧:
(?=exp)
也叫零寬度正預(yù)測先行斷言,它斷言自身出現(xiàn)的位置的后面能匹配表達(dá)式 exp。比如\b\w+(?=ing\b)
,匹配以 ing 結(jié)尾的單詞的前面部分(除了 ing 以外的部分),如查找I'm singing while you're dancing.
時(shí),它會(huì)匹配 sing 和 danc。
(?<=exp)
也叫零寬度正回顧后發(fā)斷言,它斷言自身出現(xiàn)的位置的前面能匹配表達(dá)式 exp。比如(?<=\bre)\w+\b
會(huì)匹配以 re 開頭的單詞的后半部分(除了 re 以外的部分),例如在查找 reading a book 時(shí),它匹配 ading。
假如你想要給一個(gè)很長的數(shù)字中每三位間加一個(gè)逗號(hào)(當(dāng)然是從右邊加起了),你可以這樣查找需要在前面和里面添加逗號(hào)的部分:((?<=\d)\d{3})+\b
,用它對(duì) 1234567890 進(jìn)行查找時(shí)結(jié)果是 234567890。
下面這個(gè)例子同時(shí)使用了這兩種斷言:(?<=\s)\d+(?=\s)
匹配以空白符間隔的數(shù)字(再次強(qiáng)調(diào),不包括這些空白符)。
更多建議: