Bitte Hilfe mit REGEX (Negieren)

mariomueller

Mitglied
Hallo zusammen,

ich breche mir bald die Finger. Wie kann ich eine Zeichenfolge ersetzen, die sich nicht innerhalb von eckigen Klammern befindet?
Beispiel
"/ABC/KLM[XYZ/ABC/KLM]/ABC"
Nur das erste und das letzte ABC sollen gefunden werden. Das ABC, das sich in eckigen Klammern befindet nicht. Ich bekomme das leider ohne Hilfe nicht hin.

Danke, Viele Grüße
Mario
 
Dann wäre der Stacktrace mal interessant.
Folgender Code funktioniert bei mir.
Java:
final String testString = "/ABC/KLM[XYZ/ABC/KLM]/ABC";
final String pattern = "ABC(?![^\\[]*])";
final String replacedString = testString.replaceAll(pattern, "HALLO");
System.out.println(replacedString);

// Ausgabe: 
// /HALLO/KLM[XYZ/ABC/KLM]/HALLO
 
@mariomueller Eventuell hat die IDE beim Copy&Paste des Regex strings von Robat innerhalb eines Stringliterals die enthaltenen Backslashes nochmal escaped. Eclipse macht dies, wenn du einen Text, der Backslashes enthält, in ein Stringliteral (zwischen die Anführungszeichen) kopierst, so dass der String dann so aussieht: String regex = "ABC(?![^\\\\[]*])";.
 

Zurück
Oben