3 回答

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

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

TA貢獻1846條經(jīng)驗 獲得超7個贊
因為您使用的是量化子模式,并且如Perl Doc中所述,
默認情況下,量化的子模式為“ 貪婪 ”,也就是說,它將匹配盡可能多的次數(shù)(給定特定的起始位置),同時仍允許其余模式匹配。如果希望它 與最小次數(shù)匹配,請在量詞 后面加上 “?” 。請注意,含義沒有改變,只是“貪婪”:
*? //Match 0 or more times, not greedily (minimum matches)
+? //Match 1 or more times, not greedily
因此,要使您的量化模式達到最小匹配,請遵循?:
/location="(.*?)"/
- 3 回答
- 0 關(guān)注
- 553 瀏覽
添加回答
舉報