JAVA Pattern和Matcher 的用法

String上可以使用正則表達式的操做,其實是利用了java.util.regex.Pattern與java.util.regex.Matcher的功能。當調用String的matches()方法時,其實是調用Pattern的靜態方法matches(),這個方法會返回boolean值,表示字符串是否符合正則表達式。
若是想要將正則表達式視爲一個對象來重複使用,能夠使用Pattern的靜態方法compile()進行編譯。compile()方法會返回一個Pattern的實例,這個實例表明正則表達式,以後就能夠重複使用Pattern實例的matcher()方法來返回一個Matcher的實例,表明符合正則式的實例,這個實例上有一些尋找符合正則式條件的方法可供操做。範例6.11做了示範。
** 範例6.11UsePatternMatcher.java
import java.util.regex.*;

public class UsePatternMatcher {
    public static void main(String[] args) {
        String phones1 =
              "Justin 的手機號碼:0939-100391\n" +
              "momor 的手機號碼:0939-666888\n";
        
        Pattern pattern = Pattern.compile(".*0939-\\d{6}");
        Matcher matcher = pattern.matcher(phones1);

        while(matcher.find()) {
            System.out.println(matcher.group());
        }
        
        String phones2 =
             "caterpillar 的手機號碼:0952-600391\n" +
             "bush 的手機號碼:0939-550391";
        
        matcher = pattern.matcher(phones2);

        while(matcher.find()) {
            System.out.println(matcher.group());
        }
    }
}
範例6.11會尋找手機號碼爲0939開頭的號碼,假設號碼來源不止一個(如phones一、phones2),則能夠編譯好正則表達式並返回一個Pattern對象,以後就能夠重複使用這個Pattern對象,在比對時使用matcher()返回符合條件的Matcher實例。find()方法表示是否有符合的字符串,group()方法則能夠將符合的字符串返回。程序的執行結果以下:

Justin 的手機號碼:0939-100391
momor 的手機號碼:0939-666888
bush 的手機號碼:0939-550391

下面使用Pattern與Matcher改寫範例6.9,讓程序能夠返回符合正則式的字符串,而不是返回不符合的字符串。
** 範例6.12RegularExpressionDemo2.java
import java.util.regex.*;

public class RegularExpressionDemo2 {
    public static void main(String[] args) {
        String text = "abcdebcadxbc";

        Pattern pattern = Pattern.compile(".bc");
        Matcher matcher = pattern.matcher(text);

        while(matcher.find()) {
            System.out.println(matcher.group());
        }
        System.out.println();
    }
}

style='font-family:宋體'>執行結果:  

abc
ebc
xbcjava

相關文章
相關標籤/搜索