學習Java:正規表示式

zybing發表於2007-08-13

學習正規表示式,用Jdk1.4後的java.util.regex

[@more@]

模式:

我們來看一些更常用的表示式的種類

文字(Literal):表示式內任何不具有特殊意義的字元都被看作是一個文字,並與自身匹配。

量詞(Quantifier):某些字元或表示式,它們被用來計算一個文字或分組可以在字元序列中出現的次

數,以便該序列與表示式匹配。分組是由圓括號內的一組字元指定的。
? 表示出現一次或根本不出現
* 表示出現零次或一次以上(含一次)
+ 表示出現一次或多次

字元類(Character class):一個字元類就是方括號內的一個字符集,其中,匹配可以是括號內的任意

一個字元。您可以把字元類與量詞結合在一起,例如, [acegikmoqsuwy]* 將是隻包含字母表中奇數字

母的任意字元序列。某些字元類是預先定義的:
d ― 數字(0 到 9)
D -- 非數字
s -- 空白字元,如製表符或換行符
S -- 非空白字元
w -- 單字字元(a 到 z、A 到 Z、0 到 9 以及下劃線)
W -- 非單字字元(其它任意字元)

Posix 字元類(Posix character class):某些字元類僅在用於 US-ASCII 比較時才有效。例如:
p{Lower} ― 小寫字元
p{Upper} ― 大寫字元
p{ASCII} ― 所有 ASCII 字元
p{Alpha} ― 字母字元(p{Lower} 與 p{Upper} 相結合)
p{Digit} ― 從 0 到 9 的數字
p{Alnum} ― 字母數字字元

範圍(Range):使用短線(dash)來指定包括一定範圍字元的字元類。例如, [A-J] 表示從 A 到 J

的大寫字母

否定(Negation):脫字元(^)否定字元類的內容。例如, [^A-J] 表示除 A 到 J 之外的任何字元。

反斜槓字元()在 String 常量中需要轉義。
w+ 與 p{Alnum}+ 類似,但新增了下劃線(_)。
反斜槓( .)代表句點。如果前面沒有反斜槓,單獨一個句點代表任意字元。
p{Alpha}{2, 3} 表示兩個或三個字母字元


--------------------------------------------------------------------------------
java.util.regex是一個用正規表示式所訂製的模式來對字串進行匹配工作的類庫包(其他:如

Jakarta-ORO )


它包括兩個類: Pattern和 Matcher

Pattern 一個Pattern是一個正規表示式經編譯後的表現模式。
Matcher 一個Matcher物件是一個狀態機器,它依據Pattern物件做為匹配模式對字串展開匹配檢查。

一個正規表示式,也就是一串有特定意義的字元,必須首先要編譯成為一個Pattern類的例項,這個

Pattern物件將會使用 matcher()方法來生成一個Matcher例項,接著便可以使用該 Matcher例項以編譯

的正規表示式為基礎對目標字串進行匹配工作,多個Matcher是可以共用一個Pattern物件的。

在java.util.regex包裡,我們僅需生成一個Pattern類,直接使用它的compile()

一個Matcher例項是被用來對目標字串進行基於既有模式(也就是一個給定的Pattern所編譯的正則表

達式)進行匹配查詢的,所有往Matcher的輸入都是透過CharSequence介面提供的,這樣做的目的在於可

以支援對從多元化的資料來源所提供的資料進行匹配工作。

★matches()/lookingAt ()/find():
一個Matcher物件是由一個Pattern物件呼叫其matcher()方法而生成的,一旦該Matcher物件生成,它就可

以進行三種不同的匹配查詢操作:

matches()方法嘗試對整個目標字元展開匹配檢測,也就是隻有整個目標字串完全匹配時才返回真值。
lookingAt ()方法將檢測目標字串是否以匹配的子串起始。
find()方法嘗試在目標字串裡查詢下一個匹配子串。
以上三個方法都將返回一個布林值來表明成功與否。

★replaceAll ()/appendReplacement()/appendTail():
Matcher類同時提供了四個將匹配子串替換成指定字串的方法:

replaceAll()
replaceFirst()
appendReplacement()
appendTail()

使用方式
1。Pattern wordBreakPattern = Pattern.compile("模式");
2。Matcher lineMatcher = linePattern.matcher(需要匹配的字串);
3。Match的函式如find/lookat等,檢查結果

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/855/viewspace-953080/,如需轉載,請註明出處,否則將追究法律責任。

相關文章