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-100391n" +
"momor 的手機號碼:0939-666888n";
Pattern pattern = Pattern.compile(".*0939-\d{6}");
Matcher matcher = pattern.matcher(phones1);
while(matcher.find()) {
System.out.println(matcher.group());
}
String phones2 =
"caterpillar 的手機號碼:0952-600391n" +
"bush 的手機號碼:0939-550391";
matcher = pattern.matcher(phones2);
while(matcher.find()) {
System.out.println(matcher.group());
}
}
}
範例6.11會尋找手機號碼為0939開頭的號碼,假設號碼來源不只一個(如phones1、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
xbc
本文出自CSDN博客,轉載請標示出處: http://blog.csdn.net/wofe912/archive/2009/12/18/5030571.aspx