正規表示式

2021-08-04 13:36:18 字數 2181 閱讀 7827

操作字串的一種規則,使用了特殊的符號表示

預定義字元類\

.任何字元(與行結束符可能匹配也可能不匹配)

\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正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...