上一節(jié)我們學習了使用Pattern類和Matcher類的第一步,建立模式對象,這一節(jié)我們繼續(xù)學習第二步,得到匹配對象。
得到可以檢索字符串input的Matcher類的實例matcher,稱為匹配對象:
Matcher matcher = pattern.matcher(input);
模式對象pattern調(diào)用matcher(CharSequence input)方法返回一個Matcher對象matcher,稱為匹配對象,參數(shù)input用于給出matcher要檢索的字符串。參數(shù)input可以是任何一個實現(xiàn)了CharSequence接口的類創(chuàng)建的對象,前面學習的String類和StringBuffer類都實現(xiàn)了CharSequence接口。
匹配對象matcher就可以調(diào)用各種方法檢索字符串input。例如:matcher依次調(diào)用boolean find()方法將檢索到input中和regex匹配的子字符串。例如:首次調(diào)用find()方法將檢索到input中的第一個子字符串good,即matcher.find()檢索到第一個good并返回true,這時matcher.start()返回的值是6,第一個good開始的位置, matcher.end()返回的值是10,第一個good結(jié)束的位置,matcher.group()返回good,也就是說,返回檢索到的字符串。
Matcher對象matcher可以使用下列方法尋找字符串input中是否有和模式regex匹配的子序列,regex是創(chuàng)建模式對象pattern時使用的正則表達式。
1)public boolean find()
尋找input和regex匹配的下一子序列,如果成功該方法返回true,否則返回false。matcher首次調(diào)用該方法時,尋找input中第1個和regex匹配的子序列,如果find()返回true, matcher再調(diào)用find()方法時,就會從上一次匹配模式成功的子序列后開始尋找下一個匹配模式的子字符串。另外,當find方法返回true時,matcher可以調(diào)用start()方法和end方法可以得到該匹配模式子序列在input中的開始位置和結(jié)束位置。當find方法返回true時,matcher調(diào)用group()可以返回find方法本次找到的匹配模式的子字符串。
2)public boolean matches()
matcher調(diào)用該方法判斷input是否完全和regex匹配。
3)public boolean lookingAt()
matcher調(diào)用該方法判斷從input的開始位置是否有和regex匹配的子序列。若lookingAt()方法返回true,matcher調(diào)用start()方法和end方法可以得到lookingAt()方法找到的匹配模式的子序列在input中的開始位置和結(jié)束位置。若lookingAt()方法返回true,matcher調(diào)用group()可以返回lookingAt()方法找到的匹配模式的子序列。
4)public boolean find(int start)
matcher調(diào)用該方法判斷input從參數(shù)start指定位置開始是否有和regex匹配的子序列,參數(shù)start取值0時,該方法和lookingAt()的功能相同。
5)public String replaceAll(String replacement)
matcher調(diào)用該方法可以返回一個字符串,該字符串是通過把input中與模式regex匹配的子字符串全部替換為參數(shù)replacement指定的字符串得到的,需要注意的是,input本身沒有發(fā)生變化。
6)public String replaceFirst(String replacement)
matcher調(diào)用該方法可以返回一個字符串,該字符串是通過把input中第1個與模式regex匹配的子字符串替換為參數(shù)replacement指定的字符串得到的,需要注意的是,input本身沒有發(fā)生變化。
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習題和答疑,點擊了解:
一點編程也不會寫的:零基礎(chǔ)C語言學練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進階課程
從零到寫出一個爬蟲的Python編程課程
只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程
信息學奧賽或C++選手的 必學C++課程
藍橋杯ACM、信息學奧賽的必學課程:算法競賽課入門課程
手把手講解近五年真題的藍橋杯輔導課程