Ich versuche, die Anzahl der Silben in einem bestimmten Wort mit Regex zu zählen. Ich habe auf einige andere Beiträge im Zusammenhang mit dem Stack-Überlauf hingewiesen, bekomme aber seltsames Verhalten, wenn ich mein Programm ausführe.Regex Pattern-Matching-Verhalten für grundlegende Implementierung
Hier ist, was ich bin versucht,
int n=0;
Pattern p = Pattern.compile("[aeiouy]+[^$e]");
Matcher m = p.matcher("Harry");
while(m.find()) {
n++;
}
System.out.println(n);
Jetzt ist es 1. Ausdrucken Aber es ist sowohl ein „a“ und „y“ innerhalb der Zeichenfolge. Wo bin ich falsch gelaufen?
Der Zweck des [^ $ e] war, irgendwelche Vorkommen von "e" am Ende des Zeichens zu ignorieren. – ClownInTheMoon
@ClownInTheMoon Wenn Sie das möchten, sollten Sie '[^ e] $' anstelle von '[^ $ e]' verwenden. Außerdem erzeugt '[aeiouy] +' Gruppen von einem oder mehreren Vokalen wegen des '+' am Ende. Ich bin mir nicht sicher, ob Sie das suchen. – Titus
Intersting. Wenn ich '[^ e] $' verwende, dann kommt der Wert von 'n' als Null heraus. Ja, ich suche nach Gruppen von einem oder mehreren Vokalen und versuche dann, keine stillen e zu zählen. – ClownInTheMoon