一、String 類中提供可以使用正則表達式的方法
//判斷字符串是否匹配給定的正則表達式,如果匹配返回true.
1)public boolean matches(String regex)
//根據匹配給定的正則表達式來拆分此字符串,limit 參數控制模式應用的次數,指定匹配的次數。
2)public String[] split(String regex, int limit)
//使用給定的 replacement 替換此字符串所有匹配給定的正則表達式的子字符串。
3) public String replaceAll(String regex, String replacement)
注:" .","+ “,”*","| " 在正則表達式中有特殊的含義,因此在java中要使用這些符號對字符串進行分隔時,需要在前面加上"\\"。
即爲 " \\.", “\\+” ,"\\", “\\| " 或者用”[.]""[+]""[]""[|]" 。如果是"\",則爲\\\\"。
二、實例
//判斷字符串是否全部是數字。
String str3="5225662";
System.out.println(str3.matches("\\d")); //返回true
1)對字符串str按'+'進行分隔
String str="12+38+3";
String[] arr=str.split("\\+");
for(String string:arr){
System.out.println(string);
}
2)對字符串str按'|'進行分隔
String str2="aa|bb|cc";
String[] arr2=str2.split("\\|");
for(String string:arr2){
System.out.println(string);
}
3)對字符串按多個分隔符進行分隔,用"[]" 或者用'|'連接多個分隔符。
//使用"[]"對str4按'+'和'|' 進行分隔
String str4="aaa|ccc+dddd";
String[] arr4=str4.split("[|,+]");
for(String string:arr4){
System.out.println(string);
}
//使用"|"對str5按'+'和'|' 進行分隔
String str5="aaa|ccc+dddd";
String[] arr5=str5.split("\\+|\\|");
for(String string:arr5){
System.out.println(string);
}
三、java中的正則表達式
1)字符類
[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(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](減去)
2)預定義字符類
. 任何字符(與行結束符可能匹配也可能不匹配)
\d 數字:[0-9]
\D 非數字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 單詞字符:[a-zA-Z_0-9]
\W 非單詞字符:[^\w]
3)邊界匹配器
^ 行的開頭
$ 行的結尾
\b 單詞邊界
\B 非單詞邊界
\A 輸入的開頭
\G 上一個匹配的結尾
\Z 輸入的結尾,僅用於最後的結束符(如果有的話)
\z 輸入的結尾
4)Greedy 數量詞
X? X,一次或一次也沒有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超過 m 次
5)Logical 運算符
XY X後跟 Y
X|Y X 或 Y
(X) X,作爲捕獲組
注:根據Java Language Specification 的要求,Java 源代碼的字符串中的反斜線被解釋爲Unicode 轉義或其他字符轉義。因此必須在字符串字面值中使用兩個反斜線,表示正則表達式受到保護,不被 Java 字節碼編譯器解釋。