日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

java正則表達式之Pattern與Matcher類詳解

瀏覽:10日期:2022-08-25 16:47:33

Pattern.split方法詳解

/** * 測試Pattern.split方法 */ @Test public void testPatternSplit() { String str = '{0x40, 0x11, 0x00, 0x00}'; // 分割符為:逗號, {,}, 空白符 String regex = '[,{}s]'; Pattern pattern = Pattern.compile(regex); /* * 1. split 方法用于使用正則表達式中的字符分割待匹配的字符串 * * 注意: * 1. 如果分割符位于原字符串的起始位置,則分割的時候,會在起始位置上分割出一個''出來 * 2. 如果有連續(xù)兩個分隔符,則會在這兩個分割符之間分割有一個''出來 * */ System.out.println('----------- split test -----------'); String[] results = pattern.split(str); System.out.println('length :' + results.length); for (int i = 0; i < results.length; i++) { System.out.println('element_' +i + ' :' + results[i]); } System.out.println(Arrays.toString(results)); /* * 2. split方法的limit參數(shù)的意思是使用正則表達式的分割字符將原字符串分為limit個組 * **/ System.out.println('n----------- split limit test -----------'); String[] resultsLimit = pattern.split(str, 2); for (int i = 0; i < resultsLimit.length; i++) { System.out.print(resultsLimit[i]); } }

結果:

----------- split test -----------element_0 :element_1 :0x40element_2 :element_3 :0x11element_4 :element_5 :0x00element_6 :element_7 :0x00[, 0x40, , 0x11, , 0x00, , 0x00]

----------- split limit test -----------0x40, 0x11, 0x00, 0x00}

Matcher的find/find/start/end方法詳解

測試Matcher的find方法:嘗試在目標字符串中查找下一個匹配的字串,需在循環(huán)中迭代。 groupCount :返回當前查找所獲得的匹配組的數(shù)量,不包括整個整個正則表達式的匹配。 比如,表達式有兩個子分組,則groupCount == 2 group(i):指的是用()包含的子分組,按照定義的順序標識下標,當正則表達式中使用 |連接分組,那么有的分組匹配的字串可能為null。 start(group):返回此子分組匹配的子串在原字符串中的起始位置(包含) end(group):返回此子分組匹配的子串在原字符串中的結束位置(不包含) 即子分組匹配的字符串在原字符串的位置為 [start(i),end(i)),左閉右開。

@Test public void testMatcherGroupFindStartEnd() { String str = '{0x40, 0x31, 0x20, 0x00}'; String regex = '([A-Za-z0-9]+)(,)'; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(str); // 對于在整個原字符串中,找到的下一個匹配的字串 while (matcher.find()) { // 輸出groupCount的數(shù)量 System.out.println('groupCount : ' + matcher.groupCount()); // 0-輸出整個匹配 System.out.println('the substring of contains all group : ' + matcher.group(0)); System.out.println('group_0 start index : ' + matcher.start(0) + ' end :' + matcher.end(0)); // 依次輸出子分組的匹配結果 // 如果子分組之間是通過 | 來連接的,則子分組的匹配結果有的為null for (int i = 1; i <= matcher.groupCount(); i++) { System.out.println('group_' + i + ':' + matcher.group(i)); System.out.println('group_' + i + ' start index : ' + matcher.start(i) + ' end :' + matcher.end(i)); } } }

結果:

groupCount : 2the substring of contains all group : 0x40,group_0 start index : 1 end :6group_1:0x40group_1 start index : 1 end :5group_2:,group_2 start index : 5 end :6groupCount : 2the substring of contains all group : 0x31,group_0 start index : 7 end :12group_1:0x31group_1 start index : 7 end :11group_2:,group_2 start index : 11 end :12groupCount : 2the substring of contains all group : 0x20,group_0 start index : 13 end :18group_1:0x20group_1 start index : 13 end :17group_2:,group_2 start index : 17 end :18

Matcher的replace/append方法詳解

測試Matcher的匹配替換以及追加的方法:

matcher.replaceAll方法 :替換在原字符串中所有被正則表達式匹配的字串,并返回替換之后的結果 matcher.replaceFirst方法 :替換在原字符串中第一個被正則表達式匹配的字串,并返回替換之后的結果 matcher.appendReplacement方法 : 將當前匹配子串替換為指定字符串,并且將替換后的子串以及其之前到上次匹配子串之后的字符串段添加到一個StringBuffer對象里(需while(matcher.find())進行配合迭代) matcher.appendTail(StringBuffer sb) 方法則將最后一次匹配工作后剩余的字符串添加到一個StringBuffer對象里。

3和4的結合能夠實現(xiàn)將原字符串中的某些字串替換指定字符,并返回完成替換之后的結果

@Test public void testMatcherReplaceAppend() { String str = '{0x40, 0x31, 0x20, 0x00}'; String regex = '([0-9A-Za-z]+)'; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(str); // replaceAll System.out.println('----------- replace all test ----------'); String replacedAllStr = matcher.replaceAll('replace'); System.out.println('replaced : ' + replacedAllStr); //matcher.reset(str); // 重置被matcher的字符串 matcher.reset(); // 重置matcher,以實現(xiàn)對原字符串重新搜索 // replaceFirst System.out.println('------------ replace first test ---------'); String replacedFirstStr = matcher.replaceFirst('replace'); System.out.println('replaced first : ' + replacedFirstStr); matcher.reset(); // appendReplacement System.out.println('------------- appendReplacement test ------------'); StringBuffer appendRepStr = new StringBuffer(); while (matcher.find()) { matcher.appendReplacement(appendRepStr,'0xffff'); } System.out.println(appendRepStr); // 最后調(diào)用appendTail將匹配剩余的字符串添加都StringBuffer的末尾 // 注意這時要實現(xiàn)完整的功能:將所有匹配的內(nèi)容替換并添加到appendRepStr中,剩余未匹配的繼續(xù)添加到 // appendRepStr中,相當于對原字符串進行全部的替換 // 此時要保證,在遍歷所有匹配的字串后調(diào)用appendTail方法 System.out.println('------------ appendTail test ---------------'); matcher.appendTail(appendRepStr); System.out.println(appendRepStr); }

結果:

----------- replace all test ----------replaced : {replace, replace, replace, replace}------------ replace first test ---------replaced first : {replace, 0x31, 0x20, 0x00}------------- appendReplacement test ------------{0xffff, 0xffff, 0xffff, 0xffff------------ appendTail test ---------------{0xffff, 0xffff, 0xffff, 0xffff}

測試文件源碼地址

https://github.com/zhanglbjames/exercises/blob/master/src/test/java/huawei_8_16/TestT1.java

1-匹配字符類

方括號一次只能匹配括號內(nèi)的一個字符

[abc]

a, b, or c (簡單類)

[^abc]

除了a、b或c之外的任意 字符(求反)

[a-zA-Z]

a到z或A到Z ,包含(范圍)

[a-zA-Z0-9]

匹配一次所有數(shù)字和字母的類型

[a-b-r]

匹配 a-b ,連接符 -,r注意如果想要連接符起到范圍的作用,應該滿足如下格式[a-bc-de-gf-k]即每個連接符占用的字符不能被其他連接符占用

圓括號一次匹配多個字符

比如方括號的正則表達式't[aeio]n'只匹配'tan'、'Ten'、'tin'和'ton',只能匹配單個字符,不能匹配'taeion' 圓括號可以一次匹配多個字符,比如使用't(a|e|i|o|oo)n'正則表達式,可以匹配'taen','tan','taeiooon'等 也可以配合[]使用,如正則為't([aei]|o|oo)n',則可以匹配 'taon','teoon',但是不能匹配'taeioon'

2-預定義字符類

. 匹配除換行符 n 之外的任何單字符

比如:表達式就是“t.n”,它匹配“tan”、“ten”、“tin”和“ton”,還匹配“t#n”、“tpn”甚至“t n”。

d 數(shù)字: [0-9] D 非數(shù)字: [^0-9] s 空格符: [ tnx0Bfr] S 非空格符: [^s] w 單詞字符: [a-zA-Z_0-9] W 非單詞字符: [^w]

記憶規(guī)則 大寫表示取反,小寫如下記憶

d:digit(數(shù)字)s:space(空白字符)w:word(單詞字符), 注意包括下劃線

3-表達式匹配次數(shù)

* 0次或者多次(允許0次的貪婪匹配)

例如,zo* 能匹配 'z' 以及 'zoo'。* 等價于{0,}

+ 1次或者多次(貪婪匹配)

例如,’zo+’ 能匹配 'zo' 以及 'zoo',但不能匹配 'z'。+ 等價于 {1,}。

? 0次或者1次 (非貪婪匹配,允許0次)

例如,'do(es)?' 可以匹配 'do' 或 'does' 。? 等價于 {0,1}。

{n} 恰好n次

{n,m} 從n次到m次

{n,} 至少n次

注意上述n為非負數(shù)

4-特殊字符需要轉義

java正則表達式之Pattern與Matcher類詳解

總結

到此這篇關于java正則表達式之Pattern與Matcher類的文章就介紹到這了,更多相關java正則表達式Pattern與Matcher類內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产欧美综合一区二区三区| 国产在线观看www| 91亚洲无吗| 中文不卡在线| 日韩二区三区四区| 三上悠亚国产精品一区二区三区| 成人羞羞视频播放网站| 亚洲精品欧洲| 国产情侣久久| 日韩高清一区二区| 欧美1区免费| 久久精品国产亚洲夜色av网站| 99久久亚洲精品蜜臀| 亚洲精品乱码久久久久久蜜桃麻豆| 日本亚洲欧洲无免费码在线| 免费一级欧美片在线观看网站 | 神马午夜在线视频| 国产精品毛片久久| 午夜国产精品视频| 久久av一区| 国产一区日韩一区| 午夜一区在线| 亚洲视频二区| 日韩高清一级| 鲁鲁在线中文| 最新亚洲国产| 日本激情一区| 午夜国产欧美理论在线播放| 欧美日本久久| 黄色亚洲免费| 麻豆国产91在线播放| 欧美99久久| 美女精品一区二区| 在线视频亚洲| 精品国产欧美日韩| 欧美日韩精品一本二本三本| 日本欧美大码aⅴ在线播放| 999久久久亚洲| 国产乱码精品一区二区三区亚洲人| 五月激情久久| 欧美啪啪一区| 噜噜噜躁狠狠躁狠狠精品视频| 国产精品久久777777毛茸茸| 婷婷亚洲五月| 粉嫩av一区二区三区四区五区| 亚洲一区有码| 在线国产一区二区| 日韩三区在线| 久久亚洲黄色| 久久激情av| 亚洲丝袜美腿一区| 欧美高清不卡| 婷婷激情久久| 欧美日韩中文字幕一区二区三区| 福利精品一区| 精品五月天堂| 国产精品久久| 国产精品密蕾丝视频下载| 日韩和欧美一区二区三区| 视频一区免费在线观看| 91成人精品视频| av中文资源在线资源免费观看| 精品久久91| 免费观看亚洲| 神马久久午夜| 国产一区二区色噜噜| 欧美91在线|欧美| 精品午夜久久| 人人香蕉久久| 激情久久久久久| 亚洲激情社区| 日韩精品一二三四| 国产农村妇女精品一二区| 亚洲大片在线| 亚洲综合精品| 亚洲三级毛片| 国产精品毛片久久久| 久久不卡国产精品一区二区| 精品国产亚洲一区二区三区大结局 | 国产欧美亚洲一区| 日韩av成人高清| 精品三级在线观看视频| 日韩综合在线| 国产午夜精品一区二区三区欧美| 快she精品国产999| 日韩精品久久久久久久软件91| 国产亚洲精品美女久久| 久久婷婷国产| 国内精品福利| 久久精品99国产国产精| 麻豆理论在线观看| 在线看片日韩| 日本精品影院| 国产一卡不卡| 成人在线视频区| 只有精品亚洲| 天堂√中文最新版在线| 亚洲区第一页| 亚洲一级少妇| 91欧美极品| 亚洲成人精选| 久久精品毛片| 亚洲18在线| 不卡中文一二三区| 老司机精品在线| 日韩在线麻豆| 99久久亚洲精品| 高清久久精品| 国产情侣一区| 国产一区清纯| 欧美gv在线| 麻豆精品新av中文字幕| 在线观看亚洲精品福利片| 日韩精品网站| 国产粉嫩在线观看| 日本久久一区| 婷婷综合福利| 激情综合自拍| 欧美粗暴jizz性欧美20| 精品视频高潮| 欧美三级第一页| 日本不卡中文字幕| 国产亚洲高清视频| 91精品成人| 精品视频一区二区三区在线观看| 国产精品1区在线| 日韩国产一二三区| 国产日韩欧美在线播放不卡| 久久亚洲不卡| 亚洲性图久久| 日韩中文视频| yellow在线观看网址| 日韩高清不卡一区二区| 久久国产主播| 国产精品成人自拍| 国产精品欧美在线观看| 日韩视频一区| 日韩国产在线观看| 亚洲一区国产| 国产精品欧美大片| 亚洲精品乱码| 欧美日韩国产欧| 99国产精品免费视频观看| 老牛国内精品亚洲成av人片| 一区二区视频欧美| 伊人精品视频| 婷婷综合亚洲| 国产亚洲网站| 欧美搞黄网站| 五月天综合网站| 激情综合网站| 日韩精品一级中文字幕精品视频免费观看 | 日韩综合在线| 久久中文字幕一区二区三区| 欧美日韩一区自拍| 久久免费大视频| 日韩深夜视频| 日韩电影免费在线观看| 麻豆视频一区二区| 日本激情一区| 欧洲av不卡| 国产模特精品视频久久久久| 91精品国产调教在线观看| 群体交乱之放荡娇妻一区二区| 精品国产a一区二区三区v免费| 国产一卡不卡| 精品72久久久久中文字幕| 欧美中文字幕| 欧美另类中文字幕| 国产精品一级| 青草久久视频| 国产一区二区久久久久| 色在线视频观看| 伊人久久大香线蕉av不卡| 亚洲一区二区三区高清不卡| 亚洲专区视频| 精品一区二区三区亚洲| 丝袜美腿诱惑一区二区三区| 亚洲一区二区动漫| 亚洲成人一区在线观看| 一区二区三区午夜视频| 在线日韩av| 色偷偷色偷偷色偷偷在线视频| 亚洲一区二区免费看| 国产精品午夜一区二区三区| 亚洲欧洲美洲av| 亚洲一区日本| 中文字幕人成乱码在线观看| 国产一级一区二区| 国产精品调教视频| 香蕉久久久久久久av网站| 日本色综合中文字幕| 亚洲午夜久久久久久尤物| 精品网站999| 日韩成人精品一区二区三区 | 亚洲一级大片| 日本久久综合| 国产成人精品一区二区三区视频| 青青草伊人久久| 好看的亚洲午夜视频在线|