Regexp匹配尽可能小的组

时间:2018-04-29 17:13:07

标签: javascript regex

贪婪/非贪婪的正则表达式让我有点失落

我想要一个与mongodb命令可能的最小设置匹配的正则表达式。

mongodb命令具有以下格式:db.collection.command(params)

我可以用“;”分隔多个命令和/或以“;”结尾或不结尾的空格。

例如:

db.collection.command(params);db.collection.command(params2) // the regexp must returns db.collection.command(params);
db.collection.command(params);db.collection.command(params2); // the regexp must returns db.collection.command(params); too

我尝试了很多东西,但我找不到匹配所有情况的方法。

到目前为止,我找到的最好的正则表达式是:

const commandRegexp = "(db\\.?\\w*?\\.\\w*\\([^]*\\))?;";
const regexp = new RegExp(`${commandRegexp}`);

但它没有处理这种情况:

db.collection.command(params);db.collection.command(params2); // the regexp must returns db.collection.command(params); too

正则表达式返回db.collection.command(params);db.collection.command(params2);,整个文本。

我需要一个可以处理所有这些的正则表达式:

db.collection.command(params) // the regexp must returns db.collection.command(params)
db.collection.command(params);foobar // the regexp must returns db.collection.command(params)
db.collection.command(params); // the regexp must returns db.collection.command(params);
db.collection.command(params);db.collection.command(params2) // the regexp must returns db.collection.command(params)
db.collection.command(params);db.collection.command(params2); // the regexp must returns db.collection.command(params)

1 个答案:

答案 0 :(得分:2)

使用https://regex101.com

进行测试

spark.executor.heartbeatInterval