字元描述\
轉義字元,將下乙個字元轉義
^表示從字串的開頭進行匹配
$匹配到字串的結尾
*表示前面的子表示式出現0次或者多次
+表示前面的子表示式出現一次或者多次
?表示前面的子表示式出現0次或者一次
表示前面的子表示式至少出現n次,至多出現m次
表示前面的子表示式出現n次
表示前面的子表示式至少出現n次
(pattern)
捕獲功能,匹配到的結果可以直接獲取
[xyz]
字元集合。匹配所包含的任意乙個字元。
[^xyz]
負值字元集合。匹配未包含的任意字元
[a-z]
字元範圍。匹配指定範圍內的任意字元。例如,』[a-z]』 可以匹配 『a』 到 『z』 範圍內的任意小寫字母字元。
[^a-z]
負值字元範圍。匹配任何不在指定範圍內的任意字元。例如,』[^a-z]』 可以匹配任何不在 『a』 到 『z』 範圍內的任意字元。
\d匹配乙個數字字元,等價與[0-9]
\d匹配乙個非數字字元
\w匹配乙個單詞字元,等價於[a-za-z0-9]
\w匹配乙個非單詞字元
\b匹配乙個單詞邊界,如『ver\b』中的後三個字元單詞never
\b匹配乙個非單詞邊界,如『ver\b』可以匹配單詞verb
public
void
funa()
";pattern pattern = pattern.
compile
(patternstring)
; matcher matcher = pattern.
matcher(""
);if(matcher.
find()
)}
在正規表示式中,小括號出了表示乙個整體外,還具有捕獲的功能,即使用小括號提取符合其內部表示式的功能,例如使用()提取身份證號的後四位。
public
void
fun3()
((\\d)|(\\dx))$"
;// string patternstring ="^\\d(\\d[\\d|x])$";
pattern pattern = pattern.
compile
(patternstring)
; matcher matcher = pattern.
matcher
("12345619900202443x");
if(matcher.
find()
)}
使用group()加上id獲顯示捕獲結果.group(0)顯示整個正規表示式的結果,1表示第乙個,2表示第二個,以此類推。括號巢狀時,從外往裡計數。
如果使用小括號時,不想使用捕獲功能,可以使用「(?:***)」,表示括號內冒號後的內容不是乙個捕獲組。
預設情況下,下面這些表示式會盡可能多的匹配內容。在這些表示式後面加上?,可以進入非貪婪模式。
表示式含義
x?x,一次或一次也沒有
x*x,零次或多次
x+x,一次或多次
xx,恰好 n 次
xx,至少 n 次
xx,至少 n 次,但是不超過 m 次
非貪婪模式會盡可能的少匹配。
public
void
fun3()
matcher matcher2 = pattern2.
matcher
("1231231233");
if(matcher2.
find()
)}
正規表示式從左到右進行計算,並遵循優先順序順序,這與算術表示式非常類似。
相同優先順序的從左到右進行運算,不同優先順序的運算先高後低。下表從最高到最低說明了各種正規表示式運算子的優先順序順序:
運算子描述
\轉義符
(), (? : ), (?=),
圓括號和方括號
*, +, ?, , ,
限定符^, $, \任何元字元、任何字元
定位點和序列(即:位置和順序)
替換,"或"操作。字元具有高於替換運算子的優先順序,使得"m
正規表示式 正規表示式 總結
非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 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 負浮點數 正浮點數正則式 英文本串 a za z...
正規表示式 表示式
網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...
Linux正規表示式 編寫正規表示式
為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...