預定義字元類
. 任何字元(與行結束符可能比對也可能不比對)
\d 數字:[0-9]
\D 非數字: [^0-9]
\s 空白字元:[ \t\n\x0B\f\r]
\S 非空白字元:[^\s]
\w 單詞字元:[a-zA-Z_0-9]
\W 非單詞字元:[^\w]
注意:
1.任何預定義字元沒有加上數量詞之前都隻能比對一個字元而已。
Greedy 數量詞
X? X,一次或一次也沒有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超過 m 次
注意:
2.注意正規表達式裡面不能随便加空格。會報錯。
字元類(範圍詞)
[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-dm-p]
[a-z&&[def]] d、e 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](減去)
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](減去)
注意:
3.範圍詞裡面不管内容多長,沒有數量詞的配合都隻能比對一個字元而已。
邊界比對器
^ 行的開頭
$ 行的結尾
\b 單詞邊界 單詞邊界比對器隻是代表了單詞的開始或者是結束部分,不比對任何的字元。
\B 非單詞邊界
\A 輸入的開頭
\G 上一個比對的結尾
\Z 輸入的結尾,僅用于最後的結束符(如果有的話)
\z 輸入的結尾
組和捕獲
捕獲組可以通過從左到右計算其開括号來編号。例如,在表達式 ((A)(B(C))) 中,存在四個這樣的組:
\1 ((A)(B(C)))
\2 \A
\3 (B(C))
\4 (C)
package com.cn.regex;
/**
* Author:Liu Zhiyong
* Version:Version_1
* Date:
* Desc:
預定義字元類
. 任何字元(與行結束符可能比對也可能不比對)
\d 數字:[0-9]
\D 非數字: [^0-9]
\s 空白字元:[ \t\n\x0B\f\r]
\S 非空白字元:[^\s]
\w 單詞字元:[a-zA-Z_0-9]
\W 非單詞字元:[^\w]
注意:
1.任何預定義字元沒有加上數量詞之前都隻能比對一個字元而已。
Greedy 數量詞
X? X,一次或一次也沒有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超過 m 次
注意:
2.注意正規表達式裡面不能随便加空格。會報錯。
字元類(範圍詞)
[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-dm-p]
[a-z&&[def]] d、e 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](減去)
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](減去)
注意:
3.範圍詞裡面不管内容多長,沒有數量詞的配合都隻能比對一個字元而已。
邊界比對器
^ 行的開頭
$ 行的結尾
\b 單詞邊界 單詞邊界比對器隻是代表了單詞的開始或者是結束部分,不比對任何的字元。
\B 非單詞邊界
\A 輸入的開頭
\G 上一個比對的結尾
\Z 輸入的結尾,僅用于最後的結束符(如果有的話)
\z 輸入的結尾
*/
public class Demo2 {
public static void main(String[] args) {
//預定義字元類
/*System.out.println("任意字元:"+ "%".matches("."));
System.out.println("數字字元:"+ "2".matches("\\d"));
System.out.println("非數字字元:"+ "(".matches("\\D"));
System.out.println("空白字元:"+ " ".matches("\\s"));
System.out.println("非空白字元:"+ "占".matches("\\S"));
System.out.println("單詞字元:"+ "_".matches("\\w"));
System.out.println("非單詞字元:"+ "*".matches("\\W"));*/
//Greedy 數量詞
/*System.out.println("? 一次或一次也沒有:" + ("8".matches("\\d?")));
System.out.println("* 零次或多次:" + ("888".matches("\\d*")));
System.out.println("+ 一次或多次:" + ("898".matches("\\d+")));
System.out.println("{n} 恰好 n 次 :" + ("123".matches("\\d{3}")));
System.out.println("{n,} 至少 n 次 :" + ("1234".matches("\\d{3,}")));
System.out.println("{n,m} 至少 n 次,但是不超過 m 次 :" + ("12345".matches("\\d{3,5}")));*/
//字元類(範圍詞)
/*System.out.println("abcab".matches("[abc]{3,5}"));
System.out.println("&".matches("[^abc]"));
System.out.println("z".matches("[a-z]"));
System.out.println("G".matches("[a-zA-Z]"));
System.out.println("$".matches("[a-zA-Z*#$]"));
System.out.println("n".matches("[a-dm-p]"));*/
System.out.println("hello,world".matches("\\bhello\\b,\\bworld\\b"));
}
}