用于计算音节的Java Regex

时间:2015-11-02 00:37:24

标签: java regex

我正在编写一个正则表达式模式来计算一个单词中的所有音节但是我在忽略这个情况时遇到了麻烦。" e"在这个词的最后是独自一人。

我现在的模式是:

[aeiouy]+[^$e]

我已经给出了一些不完全准确的规则,但我需要以这种方式进行练习,规则如下:

一个音节是一个连续的元音序列,除了一个孤独的元音" e"最后,元音是" aeiouy",例如单词"句子"应该只有2个音节,但我的模式是3,单词"那里"我的模式应该只有一个音节是2。

提前感谢您的帮助!

编辑:在Yassin的例子中,我注意到主要问题是当" e"正在跟随另一个字符,问号,逗号等。正则表达式正在计算另一个音节

1 个答案:

答案 0 :(得分:2)

因为你在" 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