正则表达式在第一场比赛中停止

我的正则表达式模式看起来像

<xxxx location="file path/level1/level2" xxxx some="xxx">

我只对分配给位置的引号部分感兴趣。 没有贪婪的开关,它不应该像以下那样容易吗?

/.*location="(.*)".*/

似乎没有工作。


你需要让你的正则表达式非贪婪,因为默认情况下, "(.*)"将匹配所有"file path/level1/level2" xxx some="xxx"

相反,你可以让你的星星不贪心,这将使它匹配尽可能少的字符:

/location="(.*?)"/

添加一个? 在量词( ?*+ )上使其非贪婪。


location="(.*)"将从“after location= ”之后匹配到“after some="xxx除非让它变得非贪婪,所以你需要.*? (即使它不贪婪)或者更好地替换.*[^"]*


怎么样

.*location="([^"]*)".*

这避免了使用。*的无限搜索,并且将与第一个报价完全匹配。

链接地址: http://www.djcxy.com/p/13443.html

上一篇: Regular expression to stop at first match

下一篇: How to negate specific word in regex?