首先po出最簡單的規則:
規則字符在java.util.regex Pattern類中
1:字符
x 字符x
\\ 反斜線字符
\n 換行符
\r 回車符
2:字符類
[abc] a、b 或 c
[^abc] 任何字符,除了 a、b 或 c
[a-zA-Z] a到 z或 A到 Z,兩頭的字母包括在內
[0-9] 包括數字字符0-9
3:預定義字符類
. 任何字符
\d 數字:[0-9]
\w 單詞字符:[a-zA-Z_0-9]
4:邊界匹配器
^ 行的開頭
$ 行的結尾
\b 單詞邊界(不能是單詞字符)
hello?hao are you.
5.數量詞
X? X,一次或一次也沒有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超過 m 次
例子:
[1-9][0-9]{4,14} //QQ號碼正則表達
表示第一位取值範圍爲1-9,後面是長度爲4-14的取值爲0-9的數字字符串。
1[38][0-9]{9} //13或18開頭的手機號表達
表示第一位爲1,第二位爲3或8,後面是長度爲9的取值爲0-9的數字字符串。
\\w+@\\w{2,8}(\\.[a-z]{2,3})+ //郵箱地址表示方式
前面任意位爲單詞字符(包含數字)中間加@後面是長度爲2-8的單詞字符(包含數字)再加上.後面跟着2-3位的a-z的字母字符。
\\d+
表示後面出現的數字串,直到後面出現非數字爲止。
還可以應用一些邏輯運算符如&|等等。
具體的正則表達式學習可以去此Blog,非常詳細:http://www.runoob.com/regexp/regexp-example.html
http://blog.csdn.net/u010552788/article/details/51019367
除此之外還有一些日常和正則表達式配套使用的一些java中的常用方法如:
對正則表達式進行匹配的Matches():
public boolean matches(String regex);
boolean flag = String1.matches(regex);
根據正則表達式對String進行分割的split();
public String[] split(String regex);
String s1 = "aa,bb,cc"; String regex1 = ","; String[] strArray1 = s1.split(regex1); for (int x = 0; x < strArray1.length; x++) { System.out.println(strArray1[x]); }
輸出結果爲:
aa
bb
cc
String.split("要切割的準側")返回的是一個String[ ]的首地址;String.split("要切割的準側").length 返回的是這個String被切割後的子字符串的個數(及被切割成了幾個段);String.split(""),此時,切割後的第一個段是空字符串。
根據正則表達式對String中符合條件的進行替換的replaceAll();
public String replaceAll(String regex, String replacement);
String s = "hello62212934564347892xiexie13212345678go";
String ss = s.replaceAll("\\d+", "***");
輸出結果爲:
hello***xiexie***go