簡體   English   中英

Javascript正則表達式如何獲取字符串中兩個單詞之間的所有出現

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

我使用以下函數來獲取字符串中兩個單詞之間的字符串:

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"]

通過正則表達式可以嗎? 如果不是,我該怎么做才能快速發現?

謝謝

是的,有可能。 問題是正則表達式字符“ *”(和“ +”)默認情況下為“貪心”,這意味着它將以最長的匹配項進行匹配。 您想要最短的匹配,因此通過添加“?”使其“懶惰”。 之后,就像這樣:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM