捕獲分組:后續(xù)還要繼續(xù)使用本組數(shù)據(jù)。
正則內(nèi)部使用:\組號
正則外部使用:$組號
非捕獲分組:分組后不在使用本組數(shù)據(jù),僅僅把數(shù)據(jù)括起來
(? : 正則):獲取所有 例:Java(? : 8|11|17) 結(jié)果:Java8或Java11或Java17
(? = 正則):獲取前面部分 例:Java(? = 8|11|17) 結(jié)果:8、11、17版本的Java
(? ! 正則):獲取不是指定內(nèi)容的前面部分 例:Java(? : 8|11|17) 結(jié)果:除了8、11、17版本的Java
細(xì)節(jié):如何識別組號?
只看左括號,不看右括號,按照左括號的順序,從左往右,依次為第一組,第二組,第三組等等創(chuàng)新互聯(lián)專注于揭陽企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城網(wǎng)站定制開發(fā)。揭陽網(wǎng)站建設(shè)公司,為揭陽等地區(qū)提供建站服務(wù)。全流程按需求定制網(wǎng)站,專業(yè)設(shè)計,全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
捕獲分組代碼演示:
//需求1:判斷一個字符串的開始字符和結(jié)束字符是否一致?只考慮一個字符
//舉例: a123a b456b 17891 &abc& a123b(false)
// \\組號:表示把第X組的內(nèi)容再出來用一次
String regex1 = "(.).+\\1";
System.out.println("a123a".matches(regex1)); //true
System.out.println("b456b".matches(regex1)); //true
System.out.println("17891".matches(regex1)); //true
System.out.println("&abc&".matches(regex1)); //true
System.out.println("a123b".matches(regex1)); // false
System.out.println("--------------------------");
//需求2:判斷一個字符串的開始部分和結(jié)束部分是否一致?可以有多個字符
//舉例: abc123abc b456b 123789123 &!@abc&!@ abc123abd(false)
String regex2 = "(.+).+\\1";
System.out.println("abc123abc".matches(regex2)); //true
System.out.println("b456b".matches(regex2)); //true
System.out.println("123789123".matches(regex2)); //true
System.out.println("&!@abc&!@".matches(regex2)); // true
System.out.println("abc123abd".matches(regex2)); //false
System.out.println("---------------------");
//需求3:判斷一個字符串的開始部分和結(jié)束部分是否一致?開始部分內(nèi)部每個字符也需要一致
//舉例: aaa123aaa bbb456bbb 111789111 &&abc&&
//(.):把首字母看做一組
// \\2:把首字母拿出來再次使用
// *:作用于\\2,表示后面重復(fù)的內(nèi)容出現(xiàn)0次或多次
String regex3 = "((.)\\2*).+\\1";
System.out.println("aaa123aaa".matches(regex3)); //true
System.out.println("bbb456bbb".matches(regex3)); //true
System.out.println("111789111".matches(regex3)); //true
System.out.println("&&abc&&".matches(regex3)); //true
System.out.println("aaa123aab".matches(regex3)); //false
捕獲分組練習(xí)
需求:
將字符串:我要學(xué)學(xué)編編編編程程程程程程。
替換為:我要學(xué)編程
代碼實(shí)現(xiàn):
String str = "我要學(xué)學(xué)編編編編程程程程程程";
//需求:把重復(fù)的內(nèi)容 替換為 單個的
//學(xué)學(xué) 學(xué)
//編編編編 編
//程程程程程程 程
// (.)表示把重復(fù)內(nèi)容的第一個字符看做一組
// \\1表示第一字符再次出現(xiàn)
// + 至少一次
// $1 表示把正則表達(dá)式中第一組的內(nèi)容,再拿出來用
String result = str.replaceAll("(.)\\1+", "$1");
System.out.println(result);
非捕獲分組代碼演示:
//身份證號碼的簡易正則表達(dá)式
//非捕獲分組:僅僅是把數(shù)據(jù)括起來
//特點(diǎn):不占用組號
//這里\\1報錯原因:(?:)就是非捕獲分組,此時是不占用組號的。
//(?:) (?=) (?!)都是非捕獲分組//更多的使用第一個
//String regex1 ="[1-9]\\d{16}(?:\\d|x|x)\\1";
String regex2 ="[1-9]\\d{16}(\\d Xx)\\1";
//^([01]\d|2[0-3]):[0-5]\d:[@-5]\d$
System.out.println("41080119930228457x".matches(regex2));
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)站標(biāo)題:Java正則表達(dá)式-捕獲分組和非捕獲分組12-創(chuàng)新互聯(lián)
文章出自:http://jinyejixie.com/article2/jijic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、網(wǎng)站建設(shè)、網(wǎng)站設(shè)計公司、標(biāo)簽優(yōu)化、軟件開發(fā)、營銷型網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容