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

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

正則表達式在第一次比賽時停止

正則表達式在第一次比賽時停止

慕田峪4524236 2019-10-04 14:43:54
我的正則表達式模式看起來像<xxxx location="file path/level1/level2" xxxx some="xxx">我只對分配給位置的引號感興趣。如果沒有貪婪的開關,這豈不是像下面一樣容易嗎?/.*location="(.*)".*/似乎不起作用。
查看完整描述

3 回答

?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

您需要將正則表達式設為非貪婪,因為默認情況下,"(.*)"它將匹配所有"file path/level1/level2" xxx some="xxx"。


相反,您可以使點星不貪心,從而使其與盡可能少的字符匹配:


/location="(.*?)"/

添加?一個量詞(?,*或+)使它非貪婪。


查看完整回答
反對 回復 2019-10-04
?
慕妹3146593

TA貢獻1820條經驗 獲得超9個贊

location="(.*)"除非您將其設為非貪婪location=,some="xxx否則它將從“之后” 到“之后” 匹配。因此,您要么需要.*?(即使其變得非貪婪),要么更好地替換.*[^"]*。


查看完整回答
反對 回復 2019-10-04
?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

因為您使用的是量化子模式,并且如Perl Doc中所述,


默認情況下,量化的子模式為“ 貪婪 ”,也就是說,它將匹配盡可能多的次數(給定特定的起始位置),同時仍允許其余模式匹配。如果希望它 與最小次數匹配,請在量詞 后面加上 “?” 。請注意,含義沒有改變,只是“貪婪”:


*?        //Match 0 or more times, not greedily (minimum matches)

+?        //Match 1 or more times, not greedily

因此,要使您的量化模式達到最小匹配,請遵循?:


/location="(.*?)"/


查看完整回答
反對 回復 2019-10-04
  • 3 回答
  • 0 關注
  • 548 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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