天天看點

正規表達式(規則)

預定義字元類 

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

    \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"));
  }
}      

繼續閱讀