String上的正則表示式,實際上是利用了Pattern與Matcher的功能,當您呼叫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 |