1. 程式人生 > >Pattern和Matcher物件常用方法

Pattern和Matcher物件常用方法

轉載的:https://yq.aliyun.com/ziliao/412887

1.最簡單的模式匹配判斷

    Pattern.matches(regex, str),它等同於Pattern.compile(regex).matcher(str).matches();

2.按模式分割字串

    Pattern.compile(regex).split(str),它等同於str.split(regex)

3.Matcher物件

    Matcher m = Pattern.compile(regex).matcher(str)

    m.maches(),對整個字串進行匹配,整個字串都匹配才返回true.

    m.lookingAt(),字串(str)以指定模式(regex)開始返回true

    m.find(),字串(str)在任意位置指定匹配模式(regex)就返回true

    在執行過上述返回boolean值的方法之後,可以執行m.start()、m.end()、m.group()返回匹配細節

    m.start()匹配字串在母串中的index

    m.end()匹配字串的最後一個字元在母串中的index+1

    m.group()匹配到的字串

    如果指定模式(regex)中包含分組(用小括號擴起來的部分),start、end和group方法也可以用引數指定獲取哪個分組的細節。容易忽略的是,整個模式自身算是第0個分組。例如:

    m.start() == m.start(0);

    m.end() == m.end(0);

    m.group() == m.group(0);

    Matcher m = Pattern.compile("([a-z]+)(\\d+)").matcher("fasf2334");

    m.find();

    m.start();//匹配到整個字串,開始索引是0

    m.start(0);//等於m.start(),結果也是0

    m.start(1);//匹配到第一個模式[a-z]+,也就是字串“fasf”,所以開始索引是0

    m.start(2);//匹配到第二個模式\d+,也就是字串“2334”,所以開始索引是4

4.m.find()方法

    由於m.find()方法可以匹配模式在字串中任意位置的出現,所以可能會匹配到多次。

    Matcher m = Pattern.compile("\\d+").matcher("fasf2334ss22s");
    while (m.find()) {
        System.out.println(m.group());
        System.out.println(m.start());
        System.out.println(m.end());
        System.out.println();
    }

    輸出結果為:

    2334

    4

    8

 

    22

    10

    12

以上是Pattern和Matcher物件常用方法的全部內容,在雲棲社群的部落格、問答、雲棲號、人物、課程等欄目也有Pattern和Matcher物件常用方法的相關內容,歡迎繼續使用右上角搜尋按鈕進行搜尋學習筆記 ,以便於您獲取更多的相關知識。