2

我正在将一条线与一个模式匹配,例如:

if (/.*someRegExp(.*)someOtherRegExp.*/)
{
处理 $1
}

但是,问题是我有很多次出现“someRegExp(.*)someOtherRegExp”

你能告诉我如何选择,当然!,第一次出现?

谢谢你!

4

2 回答 2

2

你需要让你的量词不贪心。*默认情况下是贪婪的,这意味着它会尝试尽可能多地捕获。为了使它不贪心,添加?

if (/.*?someRegExp(.*?)someOtherRegExp.*?/)
{
    process $1
}
于 2013-07-18T09:19:28.180 回答
2

在正则表达式的那部分之前让你的量词不情愿:

if (/.*?someRegExp(.*)someOtherRegExp.*/)
{
    process $1
}

现在,.*?将只匹配第一个匹配它后面的模式的子字符串之前的字符串。

于 2013-07-18T09:20:34.470 回答