1
正規表現を使用して、与えられた単語の中で音節の数を数えようとしています。私はスタックオーバーフローのいくつかの他の投稿を参照していますが、私のプログラムを実行すると変な動作をしています。ここで基本的な実装のための正規表現パターンマッチングの振る舞い
は、私が今
int n=0;
Pattern p = Pattern.compile("[aeiouy]+[^$e]");
Matcher m = p.matcher("Harry");
while(m.find()) {
n++;
}
System.out.println(n);
をしようとしていますものです、それは1をプリントアウトしていますが、文字列内の「A」と「Y」の両方があります。どこが間違っていたのですか?文字列の最後に
[^ $ e]の目的は、文字列の最後に "e"が出現するのを無視することでした。 – ClownInTheMoon
@ClownInTheMoonそうしたいのなら、あなたは '[^^e]'の代わりに '[^ e] $'を使うべきです。また、 '[aeiouy] +'は、最後に '+'があるため、1つ以上の母音のグループを作成します。それがあなたが探しているものかどうかは分かりません。 – Titus
インタースティング。 '[^ e] $'を使うと、 'n'の値はゼロになります。はい、私は1つ以上の母音のグループを探していて、静かな電子を数えないようにしようとしています。 – ClownInTheMoon