亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java、正則:為什么這兩個匹配的意思相同呢?

Java、正則:為什么這兩個匹配的意思相同呢?

慕碼人8056858 2019-04-07 11:19:07
javaPatternp=Pattern.compile("(?=hopeful)hope");Stringstr="hopeful";Matcherm=p.matcher(str);while(m.find()){System.out.println(m.group());}是否能匹配hopeful,如果能,則捕獲hopeful中的hope。當然繼續向后查找匹配的子串,是從f開始。比較一下可以看出,(?=hopeful)hope和hope(?=ful),兩個正則的效果其實是一樣的雖然看到了上面的說明還是不能理解,只見過hope(?=ful)這種寫法,另一種寫法該怎么理解呢?我一直以為(?=)就是用來匹配是否以xxx結尾這種形式的...
查看完整描述

2 回答

?
呼喚遠方

TA貢獻1856條經驗 獲得超11個贊

(?=exp)匹配exp前面的位置
(?=hopeful)hope->(?=hopeful)+hope
(?=hopeful)定位是hopeful中h的index向后匹配的話就找到了hope
hope(?=ful)->hope+(?=ful)
先找到hope之后匹配ful的index可以試試hope(?=ful)ful去匹配hopeful
                            
查看完整回答
反對 回復 2019-04-07
?
隔江千里

TA貢獻1906條經驗 獲得超10個贊

你可以假想匹配是在文本編輯器里把光標挪到匹配文本的開始位置,并選中捕獲文字。
hope匹配效果是|hope...豎線表示光標位置,下一個匹配從e之后開始。
(?ful)匹配ful,但是捕獲長度為0,效果相當于...|ful
兩者結合就是匹配整個hopeful但是只捕獲hope
(?hopeful)匹配效果為|hopeful,匹配了整個hopeful,并且下個匹配仍從h開始
后續hope匹配效果是|hope...
效果與上面的正則式相同。
                            
查看完整回答
反對 回復 2019-04-07
  • 2 回答
  • 0 關注
  • 307 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號