java正規表示式 ? 等特殊部分

2021-06-19 14:45:29 字數 1664 閱讀 3645

最近學習正規表示式,發現其中有一部分特殊結構,如?=  、?! 、?<=等,這些在網上幾乎找不到參考資料(也許鄙人搜尋技術不過關),於是通過對api的閱讀以及測試,大致了解了這部分內容。

本文只講正規表示式裡面比較少見的部分如?=等,常見的網上資料已經很多了!在此就不囉嗦了。

從api文件裡面,我們可以看到有一部分正規表示式 結構比較特殊,如下圖:

首先,區別一下捕獲內容和捕獲組的區別:

比如下列字串:

lorem

ipsum dolor sit amet consectetuer feugiat fames malesuada pretium egestas

.

如果使用以下正規表示式匹配:

\b(\s

)(\s

)(\s

)(\s

*)\b

我們會得到如下結果:

match

"lorem"

group1:

"l"group2:

"o"group3:

"r"group4:

"em"

match

"ipsum"

group1:

"i"group2:

"p"group3:

"s"group4:

"um"

...match

"consectetuer"

group1:

"c"group2:

"o"group3:

"n"group4:

"sectetuer"

...

從上例我們可以知道乙個()擴起來的稱為乙個捕獲組,乙個正規表示式(捕獲內容)可以含有多個捕獲組。

然後說明一下捕獲組和非捕獲組的區別:捕獲組即是可以用group()函式獲取內容的,非捕獲組則不在group()內容之內。(注意無論是捕獲組還是非捕獲組,他們都能被正規表示式捕獲到,只是非捕獲組沒有出現在group()裡面)。

接下來,讓我逐行解釋:

(?x): 匹配出x,表示乙個命名了的捕獲組,即不可以用group(int i)函式獲取,而要用group(string name)函式獲取。

(?:x): 匹配出x,為捕獲組。

(?idmsuxu-idmsuxu:x): 匹配出x
(?=x):匹配出以x前面的內容(類似結束邊界),如字串ambassador,表示式 a(?=d)匹配出最後乙個a。

(?!x):匹配出以x後面的內容(類似開始)(僅通過部分測試,不太肯定)

(?<=x):匹配出以x後面的內容(類似開始邊界)

(?

(?>x):匹配出以x,屬於非捕獲組。 (目前也不清楚independent是什麼意思)

以上是鄙人愚見,有不妥之處,還望指正!另外,對於(?!x)和(?<=x)的區別( 還有(?x)的原文件的independent之意,在下暫不清楚,也希望和各位交流一下。

特殊正規表示式

特殊需求表示式 2 網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 3 interneturl a za z s 或 http w w w 4 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 ...

部分正規表示式

d 非負整數 正整數 0 0 9 1 9 0 9 正整數 d 0 非正整數 負整數 0 0 9 1 9 0 9 負整數 d 整數 d d 非負浮點數 正浮點數 0 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 正浮點數 d d 0 0 非正浮點數 負浮點數 ...

正規表示式部分

正規表示式是用來匹配字串的強有力 在正規表示式中,如果直接給出字元,就是精確匹配。用 d可以匹配乙個數字,w可以匹配乙個字母或者數字。要匹配變長的字元,用?表示0個或1個字元,用表示n個字元,用表示n m個字元,等等。要更精確的匹配,可以用表示範圍,比如 a b 可以匹配a或b,表示行的開頭,d 表...