java 正則

                                       

重複限定符:

                                       

                                      例如:匹配8位數字的QQ號碼:^\d{8}$

分組 : 正則表達式中用小括號 () 來做分組,也就是括號中的內容作爲一個整體。

如:匹配字符串中包含 0 到多個 ab 開頭:^(ab)*

轉義 :  要匹配以 (ab) 開頭:^(\(ab\))*   

條件或 : 正則用符號 | 來表示或,也叫做分支條件,當滿足正則裏的分支條件的任何一種條件時,都會當成是匹配成功。

區間 : 

限定 0 到 9 可以寫成 [0-9]       限定 A-Z 寫成 [A-Z]            限定某些數字 [165]

                                                                         零寬斷言: 

正向先行斷言(正前瞻): 

語法:(?=pattern)

作用:匹配 pattern 表達式的前面內容,不返回本身。

正向後行斷言(正後顧):

語法:(?<=pattern)

作用:匹配 pattern 表達式的後面的內容,不返回本身。

負向先行斷言(負前瞻):

語法:(?!pattern)

作用:匹配非 pattern 表達式的前面內容,不返回本身。

負向後行斷言(負後顧):

語法:(?<!pattern)

作用:匹配非 pattern 表達式的後面內容,不返回本身。

                                                                          捕獲和非捕獲

捕獲組:匹配子表達式的內容,把匹配結果保存到內存中中數字編號或顯示命名的組裏,以深度優先進行編號,之後可以通過序號或名稱來使用這些匹配結果。

數字編號捕獲組:

語法:(exp)

解釋:從表達式左側開始,每出現一個左括號和它對應的右括號之間的內容爲一個分組,在分組中,第 0 組爲整個表達式,第一組開始爲分組。

命名編號捕獲組:

語法:(?<name>exp)

解釋:分組的命名由表達式中的 name 指定

 非捕獲組:

語法:(?:exp)

解釋:和捕獲組剛好相反,它用來標識那些不需要捕獲的分組,說的通俗一點,就是你可以根據需要去保存你的分組。

                                                                           反向引用

根據捕獲組的命名規則,反向引用可分爲:

  • 數字編號組反向引用:\k 或\number

  • 命名編號組反向引用:\k 或者\'name'.

                                                                           貪婪和非貪婪

貪婪:

貪婪匹配:當正則表達式中包含能接受重複的限定符時,通常的行爲是(在使整個表達式能得到匹配的前提下)匹配儘可能多的字符,這匹配方式叫做貪婪匹配。

特性:一次性讀入整個字符串進行匹配,每當不匹配就捨棄最右邊一個字符,繼續匹配,依次匹配和捨棄(這種匹配 - 捨棄的方式也叫做回溯),直到匹配成功或者把整個字符串捨棄完爲止,因此它是一種最大化的數據返回,能多不會少。

懶惰(非貪婪):

懶惰匹配:當正則表達式中包含能接受重複的限定符時,通常的行爲是(在使整個表達式能得到匹配的前提下)匹配儘可能少的字符,這匹配方式叫做懶惰匹配。

特性:從左到右,從字符串的最左邊開始匹配,每次試圖不讀入字符匹配,匹配成功,則完成匹配,否則讀入一個字符再匹配,依此循環(讀入字符、匹配)直到匹配成功或者把字符串的字符匹配完爲止。

                    

反義:

                    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章