Java 中有關Regex的類都在 java.util.regex 包裡
主要有 Pattern 和
Matcher 這兩個類
典型的調用順序是
Pattern p = Pattern.compile("a*b");Matcher m = p.matcher("aaaaab");boolean b = m.matches();
使用 Matcher 類,最重要的一個概念必須清楚:組(Group)
在Regex中,“()”定義了一個組,由於一個Regex可以包含很多的組,所以下面先說說怎麼劃分組的, 以及這些組和組的下標
下面我們看看一個小例子,來說明這個問題
\w(\d\d)(\w+)
這個Regex有三個組:
整個\w(\d\d)(\w+) 是第0組 group(0)
(\d\d) 是第1組 group(1)
(\w+) 是第2組 group(2)
我們看看和Regex匹配的一個字串
x99SuperJava
group(0) 是匹配整個運算式的字串的那部分 x99SuperJava
group(1) 是第1組(\d\d)匹配的部分 99
group(2) 是第二組(\w+)匹配的那部分 SuperJava
Matcher 類常用方法:
public boolean matches()
嘗試將整個地區與模式比對。這個要求整個輸入字串都要和Regex匹配,和“^$”功能相同
和find不同, find是會在整個輸入字串尋找匹配的子字串。
public boolean find()
find會在整個輸入中尋找是否有匹配的子字串
一般我們使用find的流程:
while(matcher.find()){ //在匹配的地區,使用group,replace等進行查看和替換操作 }
public int groupCount()
這個方法返回了,Regex的匹配的組數
public String group(int group)
這個方法提供了強大而方便的工具,可以得到指定的group所匹配的輸入字串