正則表達(dá)式定義了字符串的模式,可以用來搜索、編輯或處理文本。
正則表達(dá)式可以用來搜索、編輯或處理文本。
Java 正則表達(dá)式和 Perl 的是最為相似的。
java.util.regex 包主要包括以下三個類:
-
Pattern 類:
pattern 對象是一個正則表達(dá)式的編譯表示。Pattern 類沒有公共構(gòu)造方法。要創(chuàng)建一個 Pattern 對象,你必須首先調(diào)用其公共靜態(tài)編譯方法,它返回一個 Pattern 對象。該方法接受一個正則表達(dá)式作為它的第一個參數(shù)。 -
Matcher 類:
Matcher 對象是對輸入字符串進(jìn)行解釋和匹配操作的引擎。與Pattern 類一樣,Matcher 也沒有公共構(gòu)造方法。你需要調(diào)用 Pattern 對象的 matcher 方法來獲得一個 Matcher 對象。 -
PatternSyntaxException:
PatternSyntaxException 是一個非強(qiáng)制異常類,它表示一個正則表達(dá)式模式中的語法錯誤。
捕獲組
捕獲組是把多個字符當(dāng)一個單獨(dú)單元進(jìn)行處理的方法,它通過對括號內(nèi)的字符分組來創(chuàng)建。
例如,正則表達(dá)式 (dog) 創(chuàng)建了單一分組,組里包含"d","o",和"g"。
捕獲組是通過從左至右計算其開括號來編號。例如,在表達(dá)式((A)(B(C))),有四個這樣的組:
- ((A)(B(C)))
- (A)
- (B(C))
- (C)
可以通過調(diào)用 matcher 對象的 groupCount 方法來查看表達(dá)式有多少個分組。groupCount 方法返回一個 int 值,表示matcher對象當(dāng)前有多個捕獲組。
還有一個特殊的組(group(0)),它總是代表整個表達(dá)式。該組不包括在 groupCount 的返回值中。
實(shí)例
下面的例子說明如何從一個給定的字符串中找到數(shù)字串:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexMatches
{
public static void main( String args[] ){
// 按指定模式在字符串查找
String line = "This order was placed for QT3000! OK?";
String pattern = "(\\D*)(\\d+)(.*)";
// 創(chuàng)建 Pattern 對象
Pattern r = Pattern.compile(pattern);
// 現(xiàn)在創(chuàng)建 matcher 對象
Matcher m = r.matcher(line);
if (m.find( )) {
System.out.println("Found value: " + m.group(0) );
System.out.println("Found value: " + m.group(1) );
System.out.println("Found value: " + m.group(2) );
System.out.println("Found value: " + m.group(3) );
} else {
System.out.println("NO MATCH");
}
}
}
Found value: This order was placed for QT3000! OK?
Found value: This order was placed for QT
Found value: 3000
Found value: ! OK?