正则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="(.*?)"/