bestimmte klammern im string ersetzten

Bonsai

Bekanntes Mitglied
Hallo,

ich hätte da mal eine frage. kann mir jemand bei einem algorithmus helfen welcher bei z.b. solchen zeilen "{hallo das is \{eine\} test zeile.}", alle klammeern die keinen "\" davor haben rauslöscht?

Grüße
Bonsai
 
Java:
		String s = "{hallo das is \\{eine\\} test zeile.}";
		System.out.println(s.replaceAll("([^\\\\]|^)[\\{\\}]", ""));


Edit: Löschen wenn kein Slash davor
 
Zuletzt bearbeitet:
In dem link den ich gespostet habe, findest Du ganz unten ein Beispiel. Versuch das mal auf Dein konkretes Problem zu übertragen. Wenn Du dann nicht weiterkommst, poste hier Deinen Code.
 
@ariol ja das haut schon fast hin, allerdings schneidet er mi jetzt bei allen wörtern die ein "}" den letzten buchstaben weg😳
 
Es muss einfach eine gerade Anzahl [c]\[/c] davor sein. Ob das nun 0, 2, 4... sind, ist egal. Also so was wie [c]replaceAll("(\\{2}*)\\{", "$1")[/c]
 
Wenn man eine Klammer [c]{[/c] mit [c]\[/c] escapen kann, muss man also auch das Escapezeichen [c]\[/c] escapen können, das wär dann wohl [c]\\[/c]. Sowas soll also behalten werden [c]\\\{[/c] (der Output wär dann wohl [c]\{[/c]), aber [c]\\\\{[/c] nicht, da die vorderen 4 Backslashes für 2 solche stehen.
 
ja das ist mir auch bewusst. aber ich weiß einfach nicht wie ich an die fallunterscheidung "{" und "\{" herangehen soll. da mir im moment irgendwie keine brauchbare idee kommt
 
Java:
        String s = "{hallo das is \\{eine\\} test zeile.}";
        System.out.println(s.replaceAll("([^\\\\]|^)([\\{\\}])", "$1"));
 
Wenn man eine Klammer [c]{[/c] mit [c]\[/c] escapen kann, muss man also auch das Escapezeichen [c]\[/c] escapen können, das wär dann wohl [c]\\[/c]. Sowas soll also behalten werden [c]\\\{[/c] (der Output wär dann wohl [c]\{[/c]), aber [c]\\\\{[/c] nicht, da die vorderen 4 Backslashes für 2 solche stehen.

Falsch:
Ein slash wird in Java-Regexes als 4 Slashes geschrieben.
Der Slash muss doppelt maskiert werden:
Code:
Text -> Regex -> String
 \   -> \\    -> \\\\

Um
Code:
{
zu escapen müsste man das so machen:
Code:
Text -> Regex -> String
 {   -> \{    -> \\{

Dann ergibt sich für
Code:
\{[\C] das hier:
[CODE]
Text -> Regex -> String
 \{  -> \\\{  -> \\\\\\{
 
Zuletzt bearbeitet:
funktioniert soweit super, allerdings werden immer noch klammern die zum beispiel direkt nach dem text kommen (z.b. "hallo{ test" oder "hallo{ { test") beibehalten
 

Zurück
Oben