我使用以下函数来获取字符串中两个单词之间的字符串:
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”和“inside”之间的所有发现。示例结果将是:
>> ["The sentence which has a lot of words inside",
>> "The sentence short inside"]
这可以通过正则表达式吗?如果不是,我该怎么做才能快速找到?
由于
答案 0 :(得分:5)
是的,这是可能的。问题是默认情况下正则表达式字符“*”(和“+”)是“贪婪的”,这意味着它将与最长的匹配一起使用。你想要最短的匹配,所以通过添加“?”使其“懒惰”在它之后,像这样:
function findStringBetween(str, first, last) {
var r = new RegExp(first + '(.*?)' + last, 'gm');
return str.match(r);
}