例如,我有这样的表达

expression1
expression2 expression3

如果“expression1”不是不需要的字符串,我想在正则表达式中匹配“expression2 expression3”。因此,应该像这样:
unwanted
expression2 expression3 // Not Matched...

string
expression2 expression3 // Matched...

我怎样才能做到这一点?我已经尝试过类似的方法:
(?!unwanted\n)(expression2)[ ]+(expression3)

但这是行不通的。可能是什么问题?

提前致谢...

最佳答案

将不需要的字符串捕获到组1中,并检查是否未定义。如果是,则没有多余的文本,您可以捕获该匹配项,否则,将其丢弃:

var regex = /(unwanted\n)?(expression\d+)\s+(expression\d+)/g;
var str = "unwanted\nexpression2 expression3\n\nstring\nexpression4 expression5";
var res = [], m;
while ((m = regex.exec(str)) !== null) {
  if (m[1] === undefined) res.push(m[0]);
}
console.log(res);

关于javascript - 在正则表达式中排除字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40866864/

10-11 06:14