我需要用 javascript 处理一个包含可能句子的文件。还有一些特殊的句子要用方括号[]或{}括起来。在这个括号之间,这个词可以出现多次。因此,为了找到一个词,我首先尝试了:
RegExp('\\bmyword\\b', 'g');
但是我如何插入单词需要位于括号内并且括号和单词之间可以有任何内容? 如果我要在大约 10k 个句子中查找 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",
results = 0,
rx = /\[[^[\]]*]|{[^{}]*}/g;
// COUNTING
var matches = s.match(rx);
var rxWord = new RegExp("\\b" + keyword + "\\b", "g");
for (var x of matches) {
results += x.match(rxWord).length;
}
console.log(results)
// REPLACING
console.log( s.replace(rx, function($0) { return $0.replace(rxWord, '$&_ID'); }) );
\[[^[\]]*]|{[^{}]*}
模式 - 请参阅 demo - 匹配:
-
\[
- 一个[
字符 -
[^[\]]*
- 除[
之外的任何 0+ 个字符和]
-
]
- 一个]
字符 -
|
- 或 -
{
- 一个{
字符 -
[^{}]*
- 除{
之外的任何 0+ 个字符和}
-
}
- 一个}
字符。
关于javascript - 如何使用正则表达式计算或替换 javascript 中 { } 或 [ ] 之间的所有匹配单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61524959/