Javascript 用正则表达式寻找复音词

Javascript 用正则表达式寻找复音词,javascript,regex,nlp,Javascript,Regex,Nlp,我试图使用regexp查找一段文本中多音节单词的数量,我的代码大部分时间都有效,但无法识别一些多音节单词: polySyllableCount = lWords2.replace(/(?:[^laeiouy\s]es|ed|[^laeiouy\s]e)$/, ''); 是我用来计算音节的,还有 polySyllableCount = lWords2.replace(/^y/, ''); 要替换前导Y,使其不被计算 最后: try { polySyllables = polySyllable

我试图使用regexp查找一段文本中多音节单词的数量,我的代码大部分时间都有效,但无法识别一些多音节单词:

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个元音,并用除空格以外的任何字符分隔,以提供多音节单词的数量。请注意\S还与标点符号匹配,如。这可能是一些错误检测的原因。例如:

'ame.na mana miu' //'ame.na' will be treated like one word with your regexp
您可以将\S替换为\w以获得更好的结果。当然\w也将包括数字,如果您想真正准确,可以使用[a-z]。此外,您正在使用/g开关。您需要向其中添加/i,以便它也搜索AEIOUY

/...regexp.../gi 

您可以在这里了解更多信息:javascriptkit.com/javatutors/redev2.shtml

请注意\S还匹配标点符号,如
,这可能是导致某些错误检测的原因。您可以将\S替换为\w以获得更好的结果。当然\w也将包括数字,如果您想真正准确,可以使用[a-z]。此外,您正在使用/g开关。您需要向其中添加/i,这样它也可以搜索AEIOUY,所以它将是/…regexp…/giok谢谢,这肯定会有帮助!我会同时使用[a-z]和gialso,你知道我怎么说[a-z]可以出现任意次数(我实际上可能会放“[^laeiouy]”),如果至少有一个字母会出现,那就是[a-z]+,如果最小值为零,那就是[a-z]*。您还可以使用自定义数字,如[a-z]{2,6},这意味着2到6次之间。在此处了解更多信息: