前言:內容包括正則表達式的子表達式,回溯引用,前後查找,嵌入條件,以及例子的拆分介紹。如果文字描述有問題可以評論指出,如果概念很模糊,可以加我微信,我會盡量解答你的疑惑。
子表達式
介紹:把一個表達式劃分為多個子表達式,每個都是一個獨立的元素,相關元字符()
正則:\\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
閱讀更多 愛笑的阿杰 的文章