正則表達式-斷言

前言

    有時候咱們須要使用正則查找某些內容(但又不包含這些內容)以前或以後的東西,也就是說他們像\b、^、$那樣用於指定一個位置,這個位置應該知足一個條件(即斷言),
所以他們也被稱爲零寬斷言。


1.向前確定斷言

  (?=pattern) 它斷言自身出現的位置的後面能匹配表達式pattern,好比 \b\w+(?=ing\b), 匹配以ing結尾的單詞的前面的不包含ing的部分,如查找 sleeping和cooking,
它會匹配出sleep和cook.

2.向前否認斷言

  (?!pattern) 它斷言自身出現的位置的後面不匹配表達式pattern,好比 \b\w+(?!=,), 匹配全部不以","結尾的單詞的部分。

3.向後確定斷言

  (?<=pattern) 它斷言自身出現的位置的前面能匹配表達式pattern,好比 (?<=\\)", 匹配全部被\轉義過的雙引號。

4.向後否認斷言   (?<!pattern) 它斷言自身出現的位置的前面不匹配表達式pattern,好比 (?<!\\)", 匹配全部沒有被\轉義過的雙引號。   固然,使用正則表達式查找的時候你徹底能夠認爲這是畫蛇添足,用小括號加group就能夠提取出來,沒錯。可是當你須要匹配並替換的時候就要用到上面的正則語法功能。 像我以前有個需求就是要求轉義一個字符串中全部沒有被轉義過的雙引號,若是使用普通的替換那麼就會將已轉義的雙引號屢次轉義,這顯然不符合需求。 end
相關文章
相關標籤/搜索