3 回答

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
您需要將正則表達(dá)式設(shè)為非貪婪,因?yàn)槟J(rèn)情況下,"(.*)"它將匹配所有"file path/level1/level2" xxx some="xxx"。
相反,您可以使點(diǎn)星不貪心,從而使其與盡可能少的字符匹配:
/location="(.*?)"/
添加?一個(gè)量詞(?,*或+)使它非貪婪。

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊
location="(.*)"
除非您將其設(shè)為非貪婪location=
,some="xxx
否則它將從“之后” 到“之后” 匹配。因此,您要么需要.*?
(即使其變得非貪婪),要么更好地替換.*
為[^"]*
。

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊
因?yàn)槟褂玫氖橇炕幽J?,并且如Perl Doc中所述,
默認(rèn)情況下,量化的子模式為“ 貪婪 ”,也就是說(shuō),它將匹配盡可能多的次數(shù)(給定特定的起始位置),同時(shí)仍允許其余模式匹配。如果希望它 與最小次數(shù)匹配,請(qǐng)?jiān)诹吭~ 后面加上 “?” 。請(qǐng)注意,含義沒(méi)有改變,只是“貪婪”:
*? //Match 0 or more times, not greedily (minimum matches)
+? //Match 1 or more times, not greedily
因此,要使您的量化模式達(dá)到最小匹配,請(qǐng)遵循?:
/location="(.*?)"/
- 3 回答
- 0 關(guān)注
- 546 瀏覽
添加回答
舉報(bào)