上一節我們學習了使用Pattern類別和Matcher類別的第一步,建立模式對象,這一節我們繼續學習第二步,得到匹配對象。
得到可以檢索字串input的Matcher類別的實例matcher,稱為匹配物件:
Matchermatcher=pattern.matcher(input);
模式物件pattern呼叫matcher(CharSequence input)方法傳回一個Matcher物件matcher,稱為匹配對象,參數input用來給出matcher要檢索的字串。參數input可以是任何一個實作了CharSequence介面的類別所創建的對象,前面學習的String類別和StringBuffer類別都實作了CharSequence介面。
匹配物件matcher就可以呼叫各種方法檢索字串input 。例如:matcher依序呼叫boolean find()方法將檢索到input中和regex相符的子字串。例如:首次呼叫find()方法將檢索到input中的第一個子字串good,即matcher.find()檢索到第一個good並回傳true,這時matcher.start()傳回的值是6 ,第一個good開始的位置, matcher.end()回傳的值是10,第一個good結束的位置,matcher.group()回傳good,也就是說,傳回檢索到的字串。
Matcher物件matcher可以使用下列方法來尋找字串input中是否有和模式regex相符的子序列,regex是建立模式物件pattern時使用的正規表示式。
尋找input和regex匹配的下一子序列,如果成功該方法回傳true,否則回傳false。 matcher第一次呼叫該方法時,尋找input中第1個和regex匹配的子序列,如果find()返回true, matcher再呼叫find()方法時,就會從上一次匹配模式成功的子序列後開始尋找下一個匹配模式的子字串。另外,當find方法傳回true時,matcher可以呼叫start()方法和end方法可以得到該符合模式子序列在input中的開始位置和結束位置。當find方法傳回true時,matcher呼叫group()可以傳回find方法本次找到的符合模式的子字串。
matcher呼叫該方法判斷input是否完全和regex相符。
matcher呼叫該方法判斷從input的開始位置是否有和regex相符的子序列。若lookingAt()方法傳回true,matcher呼叫start()方法和end方法可以得到lookingAt()方法找到的匹配模式的子序列在input中的開始位置和結束位置。若lookingAt()方法傳回true,matcher呼叫group()可以傳回lookingAt()方法找到的符合模式的子序列。
matcher呼叫該方法判斷input從參數start指定位置開始是否有和regex匹配的子序列,參數start取值0時,該方法和lookingAt()的功能相同。
matcher呼叫該方法可以傳回一個字串,該字串是透過將input中與模式regex匹配的子字串全部替換為參數replacement指定的字串得到的,需要注意的是,input本身並沒有改變。
matcher呼叫該方法可以傳回一個字串,該字串是透過把input中第1個與模式regex匹配的子字串替換為參數replacement指定的字串得到的,需要注意的是,input本身沒有發生變化。