使用正则表达式找到多音节词

时间:2013-01-22 14:15:29

标签: javascript regex nlp

我试图使用正则表达式来查找一段文本中的多音节词的数量,我的代码大部分时间都可以工作,但是并没有找到一些多义词:

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个元音,除了空格之外的任何东西,以给我多个多音节词的数量

1 个答案:

答案 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