正則表達式 Pattern、Matcher

String上的正則表示式,實際上是利用了PatternMatcher的功能,當您呼叫String的matches()方法時,實際上是呼叫Pattern的靜態(static)方法matches(),這個方法會傳回boolean值,表示字串是否符合正則表示式。

如果您想要重覆使用您的正則表示式,則您可以使用Pattern的靜態方法compile()進行編譯,它會傳回一個Pattern的實例,代表您的正則表示式,之後您就可以重覆使用這個實例的matcher()方法來進行字串比對,這個方法會傳回一個Matcher的實例, Matcher上有一些尋找符合正則式條件的方法可供操作。

以下直接來看個實例:

  • UsePatternMatcher.java
import java.util.regex.*;

public class UsePatternMatcher {
public static void main(String[] args) {
String phones1 =
"Justin's phone number: 0939-100391/n" +
"momor's phone number: 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's phone number: 0952-600391/n" +
"bush's phone number: 0939-550391";

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

這個程式會尋找手機號碼爲0939開頭的號碼,假設您的號碼來源不只一個(如phones1、phones2),我們可以編譯好正則表示式並傳回一個 Pattern物件,之後就可以重覆使用它,程式的執行結果如下:

Justin's phone number: 0939-100391
momor's phone number: 0939-666888
bush's phone number: 0939-550391

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