我正在编写一个正则表达式模式来计算单词中的所有音节,但是我很难忽略单词结尾处只有“ 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