String上的正則表示式,實際上是利用了Pattern與Matcher的功能,當您呼叫String的matches()方法時,實際上是呼叫Pattern的靜態(static)方法matches(),這個方法會傳回boolean值,表示字串是否符合正則表示式。
如果您想要重覆使用您的正則表示式,則您可以使用Pattern的靜態方法compile()進行編譯,它會傳回一個Pattern的實例,代表您的正則表示式,之後您就可以重覆使用這個實例的matcher()方法來進行字串比對,這個方法會傳回一個Matcher的實例, Matcher上有一些尋找符合正則式條件的方法可供操作。
以下直接來看個實例:
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
|
|