操作字串的一種規則,使用了特殊的符號表示
預定義字元類\
.任何字元(與行結束符可能匹配也可能不匹配)注意:任何預定義字元沒有加上數量詞之前只能匹配乙個字元\d數字:[0-9]
\d非數字: [^0-9]
\s空白字元:[ \t\n\x0b\f\r]
\s非空白字元:[^\s]
\w單詞字元:[a-za-z_0-9]
\w非單詞字元:[^\w]
範圍表示[ ]
[abc] a、b 或 c(簡單類)注意:沒有數量詞也只能匹配乙個字元[^abc] 任何字元,除了 a、b 或 c(否定)
[a-za-z] a 到 z 或 a 到 z,兩頭的字母包括在內(範圍)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](並集)
[a-z&&[def]] d、e 或 f(交集)
greedy 數量詞
x?x,一次或一次也沒有邊界匹配器x*x,零次或多次
x+x,一次或多次
xx,恰好n次
xx,至少n次
xx,至少n次,但是不超過m次
\b只是代表了單詞的開始或結束部分,不匹配任何字元
匹配 :
matches(string regex)當且僅當字串指定的正規表示式匹配返回true
切割:split()為了提高規則復用,用()進行分組,組號從1開始,可以通過編號來引用組所匹配到的內容。需要對編號數字進行轉義:\\1就代表獲取1組匹配到的內容。 例:
string arr = str.split(" +"); \\根據空格進行切割
string arr = str.split("(.)\\1+"); \\根據重疊詞進行切割
替換 :replaceall(string regex, string replacement
)例:
string arr = str.replaceall("(.)\\1+","$1"); \\把重疊詞替換單個詞
在replaceall方法正則的外部引用組的內容要使用"$組號"
查詢 :
查詢不能使用string直接使用,需要使用物件:
pattern(正則物件)
matcher(匹配器物件)
匹配器方法:
find() 通知匹配器去匹配字串,查詢符合規則的字串。返回true,false
group() 獲取符合規則的子串(在使用group方法之前,必須要先用find方法查詢,否則報錯)
指定為字串的正規表示式必須先被編譯為此類的例項,然後可將得到的正則物件匹配任意的字串用於建立matcher物件,執行匹配所設計的所有狀態都駐留在匹配器中。典型呼叫順序為:
pattern p = pattern.compile("正規表示式"); \\字串的正則編譯成pattern物件
matcher m = p.matcher("aaaaab"); \\使用正則物件匹配字串產生乙個matcher物件
boolean b = m.matches();
正規表示式 正規表示式 總結
非負整數 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正規表示式 編寫正規表示式
為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...