Using java.util.regex
通過 java.util.regex 使用正則表達式非常簡單,功能由兩個類,一個接口和一個unchecked exception組成。
就我個人來說,更喜歡簡稱前兩個為「pattern」和「matcher」,許多時候我們只會用到這兩個類。簡單地說,Pattern 對象就是編譯好的正則表達式,可以應用於任意多個字符串,Matcher對像則對應單獨的實例,表示將正則表達式應用到某個具體的目標字符串上。
Java 1.5新提供的MatchResult,它封裝了成功匹配的數據。匹配數據可以在下一次匹配嘗試之前從Matcher本身獲得,也可以提取出來作為MatchResult保存。
如果匹配嘗試所使用的正則表達式格式不正確(例如,「[oops]」的語法就不正確),就會拋出PatternSyntaxException 異常。這是一個 unchecked exception,繼承自 java.lang.IllegalAgumentException。
下面是一個完整的、詳細的程序,示範了簡單的匹配:
結果是『matched [1st] from 12 to 15.』。在本章的所有例子中,我都用斜體表示變量名。如果這樣聲明,可以省略粗體部分:
import java.util.regex.*;
它應該放在程序的頭部,和第3章的例子(☞95)一樣。
這是標準的做法,而且程序更容易管理。本章的其他程序省略了import語句。
java.util.regex使用的對象模型與其他大多數語言不同。請注意,前面例子中的Matcher對像m,是通過把 Pattern對像和目標字符串聯繫起來得到的,它用來進行實際的匹配嘗試(使用find方法),以及查詢結果(使用group、start和end方法)。
這辦法初看起來可能有點古怪,但你很快就能適應了。