我试图使用正则表达式来查找一段文本中的多音节词的数量,我的代码大部分时间都可以工作,但是并没有找到一些多义词:
polySyllableCount = lWords2.replace(/(?:[^laeiouy\s]es|ed|[^laeiouy\s]e)$/, '');
是我用来计算音节的,
polySyllableCount = lWords2.replace(/^y/, '');
替换领先的Y,以便不计算,
最后:
try
{
polySyllables = polySyllableCount.match(/[aeiouy]\S[aeiouy]\S[aeiouy]/g).length;
}
catch(err)
{
console.log("No Poly Words")
}
计算多音节词的数量。
我的思维过程是它会找到一个(修改过的)单词中的任何3个元音,除了空格之外的任何东西,以给我多个多音节词的数量
答案 0 :(得分:1)
请注意\ S还匹配标点符号。而且,这可能是一些错误检测的原因。例如:
'ame.na mana miu' //'ame.na' will be treated like one word with your regexp
您可以用\ w替换\ S以获得更好的效果。当然\ w也包括数字,如果你想要真正准确,你可以使用[a-z]。你也在使用/ g开关。你需要添加/ i,以便它也搜索AEIOUY所以它将是
/...regexp.../gi
您可以在此处了解更多信息:javascriptkit.com/javatutors/redev2.shtml