Javascript正则表达式来匹配单词并计算每个单词出现的次数
我有一个正则表达式来检查文件中的许多单词Javascript正则表达式来匹配单词并计算每个单词出现的次数,javascript,regex,Javascript,Regex,我有一个正则表达式来检查文件中的许多单词 /((word1?)|(word2?)|(word3?)|(word4?)|(word5 ?)|(word6?)|(word7?))/gmi 是否有一种方法可以计算同一行代码中每个单词的匹配数 也就是说,当代码被执行时,我希望每个单词都被计数。 (示例:word1:10个匹配项,Word2,11个匹配项…您可以使用 var string='word1 word3 word1 word2 word4 word5 word1 word1 word3 wo
/((word1?)|(word2?)|(word3?)|(word4?)|(word5 ?)|(word6?)|(word7?))/gmi
是否有一种方法可以计算同一行代码中每个单词的匹配数
也就是说,当代码被执行时,我希望每个单词都被计数。
(示例:word1:10个匹配项,Word2,11个匹配项…您可以使用
var string='word1 word3 word1 word2 word4 word5 word1 word1 word3 word2';
变量计数={};
string.replace(/\bword\d+\b/gmi,函数($i){
计数[$i]=计数[$i]?计数[$i]+1:1;
});
console.log(count)
您可以使用String.prototype.replace()
函数。它不会是一行代码,但会非常简单:
var regex = /((word1?)|(word2?)|(word3?)|(word4?)|(word5 ?)|(word6?)|(word7?))/gmi;
var counts = {};
var sourceText = yourSourceTextWithWordsInIt;
sourceText.replace(regex, function(_, matched) {
matched = matched.toLowerCase();
counts[matched] = (counts[matched] || 1) + 1;
});
然后,
counts
对象将准确地包含您所描述的内容。字符串原型上的.replace()
函数可以将函数作为其第二个参数。当模式具有“g”标志时,将重复调用此函数。对函数的每次调用将包括整个匹配的子字符串作为第一个参数,随后的参数将是正则表达式中带括号的组匹配。可能重复检查@AshokVishwakarma no,这确实是一个不同的问题。这个问题是关于计算特定单词的出现率。检查:)那些没有前缀的单词呢?我认为通过“word1”、“word2”等,OP只是在使用示例;我怀疑真正的搜索应该是搜索“香蕉”、“苹果”、“橘子”、“葡萄柚”等。