正则expression式停止在第一场比赛
我的正则expression式模式看起来像
<xxxx location="file path/level1/level2" xxxx some="xxx">
我只对分配给位置的引号部分感兴趣。 没有贪婪的开关,它不应该像以下那样容易吗?
/.*location="(.*)".*/
似乎没有工作。
您需要使正则expression式不贪婪,因为默认情况下, "(.*)"
将匹配"file path/level1/level2" xxx some="xxx"
中的所有"file path/level1/level2" xxx some="xxx"
。
相反,你可以让你的星星不贪心,这将使它匹配尽可能less的字符:
/location="(.*?)"/
添加一个?
在一个量词( ?
, *
或+
)使它不贪婪。
如果你不想让它变得非贪婪,那么location="(.*)"
将会匹配到“after location=
some="xxx
之后,所以你要么需要.*?
(也就是说不要贪婪) .*
与[^"]*
。
怎么样
.*location="([^"]*)".*
这避免了使用。*进行无限search,并且与第一个引号完全匹配。
如果您的引擎支持它,请使用非贪婪的匹配。 添加? 里面的捕获。
/location="(.*?)"/