我的正则表达式模式看起来像
<xxxx location="file path/level1/level2" xxxx some="xxx">
我只对分配给位置的引号感兴趣。 如果没有贪婪的开关,这岂不是像下面一样容易吗?
/.*location="(.*)".*/
似乎不起作用。
#1楼
怎么样
.*location="([^"]*)".*
这样可以避免使用。*进行无限搜索,并且将与第一个引号完全匹配。
#2楼
您需要将正则表达式设为非贪婪,因为默认情况下, "(.*)"将与所有"file path/level1/level2" xxx some="xxx"匹配。
相反,您可以使点星不贪心,从而使其与尽可能少的字符匹配:
/location="(.*?)"/
添加? 量词( ? , *或+ )上的字符会使它变得非贪婪。
#3楼
如果您的引擎支持,请使用非贪婪匹配。 添加? 里面的捕获。
/location="(.*?)"/
#4楼
location="(.*)"将从“ location=之后的”匹配到some="xxx之后的some="xxx除非您将其设置为非贪婪。因此,您需要.*? (即,使其成为非贪婪的)或更好地替换.*和[^"]* 。
#5楼
使用惰性量词? 没有全局标志的答案。
例如,
如果您具有全局标志/g ,则它将与所有最低长度的匹配项匹配,如下所示。
来源:oschina
链接:https://my.oschina.net/u/3797416/blog/3159530
