標籤:
Regex的規則字元:
A:字元
x 字元 x,任一字元代表自己本身。
\\ 反斜線字元
\r 斷行符號
\n 換行
B:字元類
[abc] a、b 或 c,任一字元一次。
[^abc] 任何字元,除了 a、b 或 c
[a-zA-Z] a 到 z 或 A 到 Z,兩頭的字母包括在內
[0-9] 任意的數字字元一次
C:預定義字元類
. 任意的字元
\d 數字:[0-9]
\w 單詞字元:[a-zA-Z_0-9]
單詞字元:英文,數字,及_
D:邊界匹配器
^ 行的開頭
$ 行的結尾
\b 單詞邊界(也就是說這裡出現的不能是單詞字元)
abc hello world?haha
E:Greedy 數量詞
X? X,一次或一次也沒有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超過 m 次
F:組
擷取的群組可以通過從左至右計算其開括弧來編號。組零始終代表整個運算式。
((A)(B(C)))
第一組:(A)(B(C))
第二組:A
第三組:B(C)
第四組:C
1 import java.util.regex.Matcher; 2 import java.util.regex.Pattern; 3 4 //Pattern類的應用 5 public class PatternDemo { 6 public static void main(String[] args) { 7 Pattern p = Pattern.compile("a*b"); //括弧內表示Regex 8 Matcher m = p.matcher("c*b");//括弧內表示要匹配的字串 9 boolean flag = m.matches();10 System.out.println(flag);11 System.out.println("-------------------------------------------");12 13 String regex = "(.)\\1+";//疊詞的標記法,Regex14 Pattern p1 = Pattern.compile(regex);15 String str = "jskkjjvjksvkjsjkgahgggghgaaayf";16 Matcher m1 = p1.matcher(str);17 boolean flag2 = m1.matches();//尋找出疊詞18 System.out.println(flag2);19 while((m1.find())){//是否找到,進行判斷,自動將指標移向下一個索引20 String strTemp = m1.group();//擷取到尋找出來的結果21 System.out.println(strTemp);22 }23 System.out.println("-------------------------------------------");24 String[] strArr = str.split(regex);//依據疊詞進行分割25 for(String strTemp:strArr){26 System.out.println(strTemp);27 }28 System.out.println("-------------------------------------------");29 }30 }
Java基礎--第二十六天