Javascript REGEXP:查找紧跟在其他单词后面的单词

Javascript REGEXP:查找紧跟在其他单词后面的单词,javascript,regex,Javascript,Regex,我有以下字符串: match ddd green dd match ddd red d match ddddddd yellow ddd match dd red ddddddd match dddd blue ddd match ddd yellow d match ddddd red 我想找到所有的匹配单词,这些单词后面紧跟着红色,直到下一个匹配出现。在这种情况下,应找到第二、第四和第七个匹配项 如何使用javascript regexp实现这一点?需要此帮助吗?它使用exec标记这些匹配

我有以下字符串:

match ddd green dd match ddd red d match ddddddd yellow ddd match dd red ddddddd match dddd blue ddd match ddd yellow d match ddddd red
我想找到所有的
匹配
单词,这些单词后面紧跟着
红色
,直到下一个
匹配
出现。在这种情况下,应找到第二、第四和第七个
匹配项


如何使用javascript regexp实现这一点?

需要此帮助吗?它使用
exec
标记这些匹配项在字符串中的位置:

var regex = /(match) [a-z]+ red/gi
var myArray;
while ((myArray = regex.exec(str)) !== null) {
  var msg = 'Found match at character ' +  myArray.index;
  console.log(msg);
}
输出

Found match at character 19
Found match at character 60
Found match at character 120

对此的第一反应是:首先将字符串拆分为以“匹配”开头的块。然后,很明显可以看到哪些块满足“条件”,后面跟着“红色”

上述解决方案很容易用javascript编写。类似于:

var string = 'match ddd green dd match ddd red d match ddddddd yellow ddd match dd red ddddddd match dddd blue ddd match ddd yellow d match ddddd red',
    chiefWord = 'match',
    follower = 'red',
    chunks = string.split(new RegExp(chiefWord + '\\s+')),
    result = [];
for (var i = 0, n = chunks.length; i < n; i++) {
  if (chunks[i].indexOf(follower) >= 0) {
    result.push(i); // or chunks[i], or any other way to express result
  }
}
console.log(result); // reports "[2, 4, 7]"
var string='匹配ddd绿色dd匹配ddd红色ddd匹配ddd黄色ddd匹配ddd红色ddddd匹配ddd蓝色ddd匹配ddd黄色ddd匹配ddd红色ddd',
chiefWord=‘匹配’,
跟随者=‘红色’,
chunks=string.split(新的RegExp(chiefWord+'\\s+'),
结果=[];
for(var i=0,n=chunks.length;i=0){
result.push(i);//或chunk[i],或任何其他表示结果的方式
}
}
console.log(结果);//报告“[2,4,7]”

您没有尝试过任何东西吗?请分享您迄今为止的代码,以便更好地阐明您正在尝试实现的目标。如果在此期间有任何有用的结果,我会发布它。我认为解决方案可能是“消极前瞻”“,但它根本不起作用。我的工作会让你更困惑,而不仅仅是一个解决方案的链接……我想你可以使用。但是我看到你已经有了一个详细的解决方案。最好的办法是。拆分字符串,然后搜索数组是正确的想法。谢谢你。在我看来,这个解决方案并不完全正确,因为它不只是使用regexp。当然,我很高兴你喜欢它。问题是“使用regexp”,而不是“仅使用regexp”;-)