1. 程式人生 > >正則表示式的規則

正則表示式的規則

A:字元

    x 字元 x。舉例:'a'表示字元a

    \\ 反斜線字元。

    \n 新行(換行)符 ('\u000A') 

    \r 回車符 ('\u000D')

B:字元類

    [abc] a、b 或 c(簡單類) 

    [^abc] 任何字元,除了 a、b 或 c(否定) 

    [a-zA-Z] a到 z 或 A到 Z,兩頭的字母包括在內(範圍) 

    [0-9] 0到9的字元都包括

C:預定義字元類

    .     任何字元。我的就是.字元本身,怎麼表示呢?  \.

    \d  單個數字:[0-9]

    \w  單詞字元:[a-zA-Z_0-9]

    在正則表示式裡面組成單詞的東西必須有這些東西組成

D:邊界匹配器

    ^ 行的開頭 

    $ 行的結尾 

    \b 單詞邊界

        就是不是單詞字元的地方。

        舉例:hello world?haha;xixi

E:Greedy 數量詞 

    X?     X,一次或一次也沒有    1=X || 0=X

    X*     X,零次或多次    0=X || 1+ =X

    X+     X,一次或多次    1=X || 1+ =X

        System.out.println("546984".matches("3+"));    false

        System.out.println("13".matches("3+"));    false

        System.out.println("3".matches("3+"));    true

        System.out.println("3333".matches("3+"));    true

    X{n} X,恰好 n 次     n=X

        System.out.println("546984".matches("3{2}"));    false

        System.out.println("543384".matches("3{2}"));    false

        System.out.println("3333 ".matches("3{2}"));    fasle

        System.out.println("33".matches("3{2}"));    true

    X{n,} X,至少 n 次     [ ~    n=<X

    X{n,m} X,至少 n 次,但是不超過 m 次      [)     n=<X<=m 

字元類

Pattern類的重要方法:

public static Patterncompile(String regex,int flags):將給定的正則表示式編譯到具有給定標誌的模式中。
public Matchermatcher(CharSequence input):建立匹配給定輸入與此模式的匹配器。 
public static boolean matches(String regex, CharSequence input):編譯給定正則表示式並嘗試將給定輸入與其匹配。 

matcher的重要方法:

public boolean find():嘗試查詢與該模式匹配的輸入序列的下一個子序列。
public boolean find(int start):重置此匹配器,然後嘗試查詢匹配該模式、從指定索引開始的輸入序列的下一個子序列。 
public int start():返回以前匹配的初始索引。 
public int end():返回最後匹配字元之後的偏移量。 

用Java正則去掉字串中重複出現的字元:

abcde 順序可以不一樣,也就是去掉重複出現的字元

String str = "abcdeabcdeabcdeaaaaaadddddceeeeabcccccccacadaeec"; 

str = str.replaceAll(reg, ""); 

System.out.println(str); 

str = str.replaceAll("(?s)(.)(?=.*\\1)", ""); 

(?s)(.)(?=.*\1) 

(?s) 開啟單行模式 DOTALL 讓. 號匹配任意字元 

(.) 任意字元 並捕獲在第一組 

(?=.*\1) 這是斷言, 表示後面內容將是 任意個字元加上第一組所捕獲的內容 

這樣子,如果這整個式子匹配到,表示,第一個捕獲組內容在字串中,至少出現兩次,替換為 "" 空串. 

進行 全域性替換後, 整個字串所出現的字元將不重複。