在使用正則表達(dá)式時(shí)简软,有時(shí)我們需要捕獲的內(nèi)容前后必須是特定內(nèi)容,但又不捕獲這些特定內(nèi)容的時(shí)候碟摆,零寬斷言就起到作用了晃财。
(?=exp):零寬度正預(yù)測(cè)先行斷言,它斷言自身出現(xiàn)的位置的后面能匹配表達(dá)式exp典蜕。
#匹配后面為_(kāi)path断盛,結(jié)果為product
'product_path'.scan /(product)(?=_path)/
(?<=exp):零寬度正回顧后發(fā)斷言,它斷言自身出現(xiàn)的位置的前面能匹配表達(dá)式exp
#匹配前面為name:愉舔,結(jié)果為wangfei
'name:wangfei'.scan /(?<=name:)(wangfei)/ #wangfei
(?!exp):零寬度負(fù)預(yù)測(cè)先行斷言钢猛,斷言此位置的后面不能匹配表達(dá)式exp。
#匹配后面不是_path
'product_path'.scan /(product)(?!_path)/ #nil
#匹配后面不是_url
'product_path'.scan /(product)(?!_url)/ #product
(?<!exp):零寬度負(fù)回顧后發(fā)斷言來(lái)斷言此位置的前面不能匹配表達(dá)式exp
#匹配前面不是name:
'name:angelica'.scan /(?<!name:)(angelica)/ #nil
#匹配前面不是nick_name:
'name:angelica'.scan /(?<!nick_name:)(angelica)/#angelica