這篇文章主要介紹Java正則相關(guān)Pattern和Matcher類的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
橫峰網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,橫峰網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為橫峰成百上千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請找那個(gè)售后服務(wù)好的橫峰做網(wǎng)站的公司定做!
先來說說 Matcher 里面的三個(gè)方法(取的結(jié)果以group()方法為例子)
matches():整個(gè)匹配,只有整個(gè)字符序列完全匹配成功,才返回True,否則返回False。但如果前部分匹配成功,將移動(dòng)下次匹配的位置。舉個(gè)例子如果字符串為"a123",正則表達(dá)式為"\w\d\d\d",則matches()方法才返回true,換言之,就是要匹配的字符串需要跟正則表達(dá)式一一對應(yīng),字母對應(yīng)字母,數(shù)字對應(yīng)數(shù)字,所以稱之為完全匹配,錯(cuò)一位都不行。(這里的理解花了我好長時(shí)間,網(wǎng)上搜到的都沒有提及,也許是我理解能力不夠)
find():部分匹配,從當(dāng)前位置開始匹配,找到一個(gè)匹配的子串,將移動(dòng)下次匹配的位置?!癴ind()像迭代器那樣向前遍歷輸入字符串?!?--摘自《Java編程思想??聪旅娴睦又械膄ind()方法,要匹配的字符串為"a123b",正則表達(dá)式為"\d\d\d",而最后輸出結(jié)果為:123,所以稱之為部分匹配,只要有,就返回true。
lookingAt():部分匹配,總是從第一個(gè)字符進(jìn)行匹配,匹配成功了不再繼續(xù)匹配,匹配失敗了,也不繼續(xù)匹配。lookingAt()方法介于matches()和find()方法之間。lookingAt()方法的部分匹配指從第一位開始匹配如果第一位沒有匹配到,就不再匹配,直接返回false,如果第一位匹配到了,則匹配第二位,以此類推。例子:要匹配的字符串為"a123b",正則表達(dá)式為"\w\d\d",輸出結(jié)果為"a12",很好理解,就是一位一位地匹配,匹配到了就匹配下一位。"\w\d\d"這個(gè)正則正好代表"字母數(shù)字?jǐn)?shù)字",所以正好輸出結(jié)果為a12。
好了上測試代碼:
package com.wjj.utils; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @author 作者 : 榨菜哥 * @version 創(chuàng)建時(shí)間:2016年8月18日 上午8:47:58 * 類說明:正則表達(dá)式的練習(xí) */ public class Regex { //find方法測試 public static void find(String html) { String regex = "\\d\\d\\d"; Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(html); System.out.print("find():"); if (matcher.find()) { System.out.println(matcher.group()); } } //matches方法測試 public static void matches(String html) { String regex = "^\\w\\d\\d\\d"; Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(html); System.out.print("matches():"); if (matcher.matches()) { System.out.println(matcher.group()); } } //lookingAt方法測試 public static void lookingAt(String html) { String regex = "\\w\\d\\d"; Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(html); System.out.print("lookingAt():"); if (matcher.lookingAt()) { System.out.println(matcher.group()); } } public static void main(String[] args) { //find方法測試 find("a123b"); //matches方法測試 matches("a123"); //lookingAt方法測試 lookingAt("a123b"); } }
輸出結(jié)果:
find():123
matches():a123
lookingAt():a12
小結(jié):正則表達(dá)式本身并不難,平常使用的時(shí)候只要按照規(guī)則來寫就好了。在學(xué)習(xí)中理解matches、find、和lookingAt三個(gè)方法花了我比較長的時(shí)間,一直不能理解完全匹配和部分匹配是什么意思,最后還是在stackoverflow上找到了想要的答案。
以上是“Java正則相關(guān)Pattern和Matcher類的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!