我在模式上匹配一行,如:
if (/.*someRegExp(.*)someOtherRegExp.*/) { process $1 }
但是,问题是,我在行中出现过多次“someRegExp(。*)someOtherRegExp”
你能否告诉我如何才能确定第一次选择?
谢谢你!答案 0 :(得分:2)
你需要让量词不贪婪。默认情况下*
是贪婪的,这意味着它会尝试尽可能多地捕获。为了使其不贪心,请添加?
:
if (/.*?someRegExp(.*?)someOtherRegExp.*?/)
{
process $1
}
答案 1 :(得分:2)
在正则表达式的那部分之前让你的量词不情愿:
if (/.*?someRegExp(.*)someOtherRegExp.*/)
{
process $1
}
现在,.*?
只匹配第一个子字符串与其后面的模式匹配之前的字符串。