String Replace mit Regulärem Ausdruck

LastSamurai

Mitglied
Hey Leute, ich hoffe Ihre könnt mir helfen, denn ich stehe hier ziemlich auf dem Schlauch:
gegeben: String der Art "Bla <haha> Test<KK>blaaaaa"
Daraus soll werden "Bla Test blaaaaa

Sprich alles was in bestimmten Zeichen steht (hier "<>") soll gelöscht werden.
Probiert habe ich das hiermit:
Java:
x = "Bla <haha> Test<KK>blaaaaa";
x = x.replaceAll("<.*>", "");
System.out.println(x);
Rauskommen tut aber Nur "Bla blaaaaa". Das Test dazwischen wir mitgelöscht. Wie verhindere ich das?

PS Ok ich habs jetzt mit "<(.*?)>" hinbekommen. Könnte mir eventuell einer erklären warum ich da noch die Klammern und das ? brauche?!
 
Zuletzt bearbeitet:
Die Klammern brauchst Du nicht, nur das Fragezeichen. * und + sind greedy, d. h. sie matchen so lange es geht. Ausführlich betrachtet matcht das .* erstmal den Rest des Strings und prüft danach wie es weiter geht. Schlägt der Match fehl, gibt der . ein Zeichen zurück (das letzte a). Schlägt er wieder fehl, gibt es ein weiteres Zeichen (das vorletzte a), usw. bis zum > hinter dem KK.

.*? hingegen ist reluctant. Es matcht so wenig wie nötig.
 

Neue Themen


Zurück
Oben