Java基礎--正則表達式

正則表達式:就是有一定規則的字符串。然後其他方法調用時將其作爲參數傳入。

1,常見符號

字符 
x 字符 x 
\\ 反斜線字符 
\0n 帶有八進制值 0 的字符 n (0 <= n <= 7) 
\0nn 帶有八進制值 0 的字符 nn (0 <= n <= 7) 
\0mnn 帶有八進制值 0 的字符 mnn(0 <= m <= 3、0 <= n <= 7) 
\xhh 帶有十六進制值 0x 的字符 hh 
\uhhhh 帶有十六進制值 0x 的字符 hhhh 
\t 製表符 ('\u0009') 
\n 新行(換行)符 ('\u000A') 
\r 回車符 ('\u000D') 
\f 換頁符 ('\u000C') 
\a 報警 (bell) 符 ('\u0007') 
\e 轉義符 ('\u001B') 
\cx 對應於 x 的控制符 

字符類 
[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-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](減去) 

預定義字符類 
. 任何字符(與行結束符可能匹配也可能不匹配) 
\d 數字:[0-9] 
\D 非數字: [^0-9] 
\s 空白字符:[ \t\n\x0B\f\r] 
\S 非空白字符:[^\s] 
\w 單詞字符:[a-zA-Z_0-9] 
\W 非單詞字符:[^\w] 

邊界匹配器 
^ 行的開頭 
$ 行的結尾 
\b 單詞邊界 
\B 非單詞邊界 
\A 輸入的開頭 
\G 上一個匹配的結尾 
\Z 輸入的結尾,僅用於最後的結束符(如果有的話) 
\z 輸入的結尾 

Greedy 數量詞 
X? X,一次或一次也沒有 
X* X,零次或多次 
X+ X,一次或多次 
X{n} X,恰好 n 次 
X{n,} X,至少 n 次 
X{n,m} X,至少 n 次,但是不超過 m 次 


Logical 運算符 
XY X 後跟 Y 
X|Y X 或 Y 
(X) X,作爲捕獲組 

2,正則表達式的四種功能

匹配、切割、替換、獲取

1)匹配:String中的matches方法。
public static void qqCheck(String qq)
{
    String reg = "[1-9]\\d{4-14}";//第一位只能是1-9, 後面是數字,接有4-14位。

    //返回結果是boolean型,符合reg返回true。
    qq.matches(reg);

}
2)切割:String[] 中split(String reg)
    public class Regex {

    public static void main(String[] args) {


    String reg1 = "\\.";//以.切割
    String reg2 = " +";//零個或多個空格切
    String reg3 = "(.)\\1+";//以疊詞切,

    String[] s = "192.168.1.1".split(reg1);
    print(s);

    s = "he    ll   o   ".split(reg2);
    print(s);

    s = "dfnnnnnnnnnngiiiiidfiiiisdssssdcs".split(reg3);
    print(s);
    }
    public static void print(String[] s)
    {
        for(String str : s)
            System.out.print(str);
    }

}
3)替換:String 中replaceAll方法
    String s = "nnnnnnnnniiiiiiiissss"String reg = "(.)\\1+";
    s=s.replaceAll(reg, "$1");//$1表示reg表達式括號內的組合
4)獲取:
package com.itheima;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Regex
{
    public static void main(String[] args)
    {
        String s = "ma shang jiu yao qu heima ";
        String reg = "\\b\\w{3}\\b";//這裏定義正則表達式

        get(s, reg);

    }
    public static void get(String s, String reg)
    {
        //Pattern是一個類,調用功能將規則封裝成一個對象。
        Pattern p = Pattern.compile(reg);

        //將正則對象p和要作用的字符串s關聯,返回的一個匹配器對象。
        Matcher m = p.matcher(s);

        while(m.find())//匹配器查找與模式匹配的一個子序列
            System.out.println(m.group());//返回給定組捕獲的子序列。


    }

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章