正則表達式-完結

正則表達式-完結

前言:內容包括正則表達式的子表達式,回溯引用,前後查找,嵌入條件,以及例子的拆分介紹。如果文字描述有問題可以評論指出,如果概念很模糊,可以加我微信,我會盡量解答你的疑惑。

子表達式

正則表達式-完結

介紹:把一個表達式劃分為多個子表達式,每個都是一個獨立的元素,相關元字符()

正則:\\d{1,3}.\\d{1,3}.\\d{1,3}.\\d{1,3}

正則表達式-完結

注:這只是一個匹配文本中ip的正則,對於,666.666.666.666這種非ip的數值,也是可以匹配到的。不過我們這裡只是提取文本中的ip。要匹配正確的ip,可以自己嘗試一下。

解析:\\d 代表數字,出現1到3次,這個重複的表達式寫了四次,但是毫無疑問,這個是能匹配到文本中的正確的ip的。但是這個看起來比較麻煩,這種情況其實我們就可以使用子表達式

利用子表達式:(\\d{1,3}\\.){3}\\d{1,3}

正則表達式-完結

利用子表達式正則解析:

(\\d{1,3}\\.){3}表示這個(\\d{1,3}\\.)重複三次,對應ip地址的前三位地址,\\d{1,3}表示匹配ip地址的最後一組數字

回溯引用

正則表達式-完結

定義:後半部分引用前半部分中定義的子表達式

正則表達式 :.*?

正則表達式-完結

解析: [1-6]建立了一個數字組,表示

,

......

,

.*?這裡用了懶惰型字符,在頁面中,正常來說,後面是有一個換行符的。元字符.不匹配換行符,如果沒有換行符,貪婪型可能會從

直接匹配到,為了保險起見,用懶惰型肯定是沒有錯的。

表示,......,

但是這個正則表達式會將

今天。。 也給匹配出來。這個時候我們可以利用回溯引用來實現

正則表達式:.*?

正則表達式-完結

解析([1-6])把這個提成一個子表達式, \\1代表引用子表達式的結果,\\1--第一個子表達式的結果

利用回溯引用來替換字符串:

正則表達式-完結

解析:$1代表替換的時候引用的第一個子表達式,$2是第二個

大小寫轉化

正則表達式-完結

  • \\E 結束轉化
  • \\l 把下一個字母轉化為小寫
  • \\L 把/L與\\E之間的字符全部替換為小寫
  • \\\\u 把下一個字母轉化為大寫
  • \\U 把\\U與\\E之間的字符全部轉化為小寫

向前向後查找

正則表達式-完結

正則表達式-完結

正則表達式:(?<=\\$)[0-9.]+

解析:(?<=\\$)?<= 表示向$符號後面查找

正則表達式-完結

正則表達式:.+(?=\\$) 向$符號前面查找

操作符:

(?=)

正向前查找

(?!)

反向前查找

(?<=)

正向後查找

(?<=)

反向後查找

嵌入條件

正則表達式-完結

語法:(?(條件)滿足情況下執行|不滿足情況下執行)

測試正則:(?=-)(?(1)\\w|\\s)

解析:(?=-) 向前查找一個 - 字符

(?(1)\\w|\\s) 如果(?=-) 條件執行成功 ,即 - 字符存在,匹配一個\\w否則匹配一個\\s


分享到:


相關文章: