Ich bin also völlig neu in Regular Expressions und versuche Java mit java.util.regex Interpunktion in Eingabe-Strings zu finden. Ich werde nicht wissen, welche Art von Interpunktion ich im Voraus bekommen könnte, außer dass (1)!,?,., ... alle gültige Punktzahl sind und (2) "& lt;" und "& gt;" bedeuten etwas Besonderes und zählen nicht als Interpunktion. Das Programm selbst erstellt Phrasen pseudozufällig, und ich möchte die Interpunktion am Ende eines Satzes entfernen, bevor es den zufälligen Prozess durchläuft.
Ich kann ganze Wörter mit beliebigen Interpunktionen abgleichen, aber der Matcher gibt mir nur Indizes für dieses Wort. Mit anderen Worten:
%Vor%wird alle Wörter mit einem "!" am Ende. Zum Beispiel:
%Vor%Ergebnisse in - & gt; String-Match ~ "Tag!"
Aber ich möchte Matcher index nur das "!" haben, damit ich es einfach abspalten kann.
Ich könnte wahrscheinlich Fälle machen und Stringstring (...) für jede Art von Interpunktion verwenden, die ich bekommen könnte, aber ich hoffe, dass es einen Fehler bei der Verwendung von regulären Ausdrücken gibt, um dies zu tun.
Ich würde einen Zeichenklassenregex ähnlich wie
versuchen %Vor% Fügen Sie alle Zeichen hinzu, die Sie in []
s anpassen möchten. Achten Sie darauf, alle Zeichen zu vermeiden, die eine besondere Bedeutung für den Regex-Parser haben könnten.
Sie müssen dann die Übereinstimmungen durchlaufen, indem Sie Matcher.find()
verwenden, bis sie false zurückgibt.
Java unterstützt POSIX-Zeichenklassen auf Umwegen. Für Interpunktion ist das Java-Äquivalent von [: punct:] \ p {Punct} .
Weitere Informationen finden Sie im folgenden Link .
Hier ist ein konkretes, funktionierendes Beispiel, das den Ausdruck in den Kommentaren verwendet
%Vor%