如何用正则表达式计算JavaScript中{}或[]之间的所有匹配单词?

问题描述 投票:1回答:1

我需要使用javascript中可能包含句子的文件来处理。括号[]或{}中有一些特殊的句子。在这个括号之间的单词可以出现多次。因此,我想先尝试找到一个单词:

RegExp('\\bmyword\\b', 'g');

但是我如何插入这些词必须放在方括号内,并且任何内容都可以在方括号和词之间?如果我要用大约1万个句子查找500个单词,该如何加快速度?然后我应该使用模式吗?

javascript regex
1个回答
3
投票

您可以使用{}模式提取[]/\[[^[\]]*]|{[^{}]*}/g之间的所有子字符串,并仅在这些匹配项内查找所需的单词。

如果在word中搜索word [myword word hisword word] and word here, {word myword theirword} too.,则期望3作为输出:

var s = "word [myword word hisword word] and word here, {word myword theirword} too.",
    keyword = "word",
    rx = /\[[^[\]]*]|{[^{}]*}/g;
      
var matches = s.match(rx);
var rxWord = new RegExp("\\b" + keyword + "\\b", "g");
console.log( matches.join("").match(rxWord).length );

\[[^[\]]*]|{[^{}]*}模式-参见demo-匹配项:

  • [\[-一个[字符
  • [[^[\]]*-[]]以外的任何0+个字符>
  • []-一个]字符
  • |-或
  • [{-一个{字符
  • [[^{}]*-{}]以外的任何0+个字符>
  • [}-一个}字符。
© www.soinside.com 2019 - 2024. All rights reserved.