正则表达式 - 仅当指定的字符串位于组之间时才从字符匹配到字符

时间:2017-08-03 23:51:16

标签: regex

我想匹配两个")"之间的字符串。只有在字符串中找到指定的单词时才会出现字符。

例如,请考虑以下文本块:

...Milwaukee 2 (FINAL) Arizona 6   Chicago Cubs 5 (BOT 6TH) NY Mets 4   Colorado 5 (FINAL) Detroit...

指定的单词为" Colorado"。使用的语言是Kustom,但为了简单起见,请将语言视为带有lookbehinds的javascript。

我想要匹配:

 NY Mets 4   Colorado 5 (FINAL)

我尝试过:(?<=\)).*?(Colorado).*?(?:\))但它会从第一个&#34;)&#34开始返回匹配。到科罗拉多州之后的那个。

2 个答案:

答案 0 :(得分:0)

从单词边界开始捕捉:

  • 目标词Colorado
  • 之前的字符和空格
  • 目标词科罗拉多
  • 所有后续单词字符,空格和左括号
  • 结束括号

    \b[\w\s]*?Colorado[\w\s\(]*?\)
    

答案 1 :(得分:0)

试试这个(?!\s).*?Colorado.*?(?:\))

s = `...Milwaukee 2 (FINAL) Arizona 6   Chicago Cubs 5 (BOT 6TH) 
   NY Mets 4   Colorado 5 (FINAL) Detroit...`

m = s.match(/(?!\s).*?Colorado.*?(?:\))/gm)
console.log(m[0]);

`