Javascript正则表达式如何获得字符串中两个单词之间的所有出现

Javascript regex how to get all occurences between two words in a string

本文关键字:之间 单词 两个 何获得 正则表达式 字符串 Javascript      更新时间:2023-09-26

我使用以下函数来获取字符串中两个单词之间的字符串:

function findStringBetween(str,first,last){
  var r = new RegExp(first+'.*(.*)'+last,'gm');
  var a = str.match(r);     
  return a;
}

但是我不能得到所有可能的发现。

例如,如果一个句子(str)是这样的情况:

"里面有很多单词的句子。句子里面很短。还有一些其他的句子来填补我的这个例子。"

我得到这个:

var found = findStringBetween(str, 'The', 'inside');
>> ["The sentence which has a lot of words inside. The sentence short inside"]

我想要得到的是"the"answers"inside"这两个词之间的所有发现。对于示例,结果将是:

>> ["The sentence which has a lot of words inside",
>> "The sentence short inside"]

这是可能通过正则表达式吗?如果不是,我怎么做才能快速找到答案?

谢谢

是的,有可能。问题是regex字符"*"(和"+")在默认情况下是"贪婪的",这意味着它将使用最长的匹配。您想要尽可能短的匹配,所以通过在后面添加"?"来使其"懒惰",如下所示:

function findStringBetween(str, first, last) {
    var r = new RegExp(first + '(.*?)' + last, 'gm');
    return str.match(r);
}