我正在编写一个正则表达式模式来计算单词中的所有音节,但是我很难忽略单词结尾处只有“ e”的情况。

我现在的模式是:

[aeiouy]+[^$e]


我给出了一些不完全精确的规则,但在练习中我需要这样做,规则如下:

一个音节是一个连续的元音序列,除了结尾的一个单独的元音“ e”外,元音是“ aeiouy”,例如单词“ sentence”应该是两个音节,但我的模式是3个,单词“ there “按我的模式计数,应该只有一个音节2。

在此先感谢您的帮助!

编辑:以Yassin为例,我注意到主要的问题是当“ e”后面跟随另一个字符,问号,逗号等时。正则表达式正在计算另一个音节

最佳答案

当您遇到以“ e”结尾的单词以及后跟点或逗号等问题时。

这是一个使用12个音节句子的解决方案。

我们排除以下任何字符后的“ e”字母。





Pattern p = Pattern.compile("[aeiouy]+[^$e(,.:;!?)]");
Matcher m = p.matcher("This is a sentence:this is another sentence.");

int syllables = 0;
while (m.find()){
    syllables++;
}
System.out.println(syllables);


输出量

12

09-10 04:01
查看更多