0

我正在尝试使用正则表达式来查找一段文本中的多音节词的数量,我的代码大部分时间都可以工作,但无法识别某些多音节词:

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 个元音,由除空格以外的任何内容分隔,给我多音节词的数量

4

1 回答 1

1

请注意 \S 也匹配标点符号,如 . 和 ,这可能是一些错误检测的原因。例如:

'ame.na mana miu' //'ame.na' will be treated like one word with your regexp

您可以将 \S 替换为 \w 以获得更好的结果。当然 \w 也会包含数字,如果你想要非常准确,你可以使用 [az]。您也正在使用 /g 开关。您需要将 /i 添加到它,以便它也搜索 AEIOUY 所以它将是

/...regexp.../gi 

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

于 2013-01-23T09:11:05.767 回答