我需要使用javascript中可能包含句子的文件来处理。括号[]或{}中有一些特殊的句子。在这个括号之间的单词可以出现多次。因此,我想先尝试找到一个单词:
RegExp('\\bmyword\\b', 'g');
但是我如何插入这些词必须放在方括号内,并且任何内容都可以在方括号和词之间?如果我要用大约1万个句子查找500个单词,该如何加快速度?然后我应该使用模式吗?
您可以使用{}
模式提取[]
和/\[[^[\]]*]|{[^{}]*}/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+个字符>}
-一个}
字符。