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

标签 javascript regex

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

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

但是我如何插入单词需要位于括号内并且括号和单词之间可以有任何内容? 如果我要在大约 10k 个句子中查找 500 个单词,我怎样才能加快速度?那么我应该使用模式吗?

最佳答案

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

如果您搜索 wordword [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/

相关文章:

java正则表达式否定边界(方括号)

java - 正则表达式,获取所有超链接

javascript - NodeJS 5 中未定义 Harmony 集合

javascript - 我需要匹配文本的特定部分并使用 jquery 获取以下数字

javascript - 通过页面刷新使用 JQuery 保留添加的类

javascript - 混合应用程序获取发布的商店

regex - 从 netstat 命令中提取端口号

regex - 可空性(正则表达式)

javascript - knockout 并非所有属性都被映射

javascript - 在 React 中,node.js .getHeaders() 相当于什么? (与axios react 的文件上传)