# RegEx um zu escapen?



## Volvagia (7. Mai 2011)

Ich habe Steuerzeichen und Nutzerdaten. Da die Nutzerdaten jede beliebige Form annehmen können, kamen mir 2 grundlegende Ideen. Entweder, ich benutze eine so komplizierte Zeichenfolge von Sonderzeichen, das die Chance für eine Kollision gleich 0 ist, oder ich escape die Sonderzeichen und das Escapezeichen in den Nutzerdaten.
Leider kenne ich mit mit RegEx und den Generatoren gar nicht aus. Ich könnte einfach mir replace rangehen, aber das wäre ja leistungsmäßig eine schlechte Idee. Außerdem muss ich später bei Befehle, bei denen man RegEx benutzen kann angeben, dass er es nur dort machen soll, wo das Zeichen nicht Escaped ist.

Kennt dafür zufällig jemand eine (möglichst simple) Lösung?


----------



## fastjack (8. Mai 2011)

Zum Escapen nehme ich gewöhnlich die StringEscapeUtils von Apache-Commons, die basieren aber auch letztendlich auf replace.


----------



## Volvagia (9. Mai 2011)

Danke. Ich habe mich durch einige Tutorials gewühlt, um das zu schreiben, dass er nur bei nicht-escaped-Zeichen reagieren soll. Als Beispiel einmal, dass er nur bei ";", nicht aber bei "\;" spliten soll.
Eigendlich wird richtig gesplitet, aber das Zeichen vor dem unescaped ; verschwindet.


```
String text = "Hallo;wie\\;gehts?";
String regex = "[^\\\\;][;]";
		
Pattern p = Pattern.compile(regex);
String[] array = p.split(text);
		
for(String part:array)
{
	System.out.println("Part: " + part);
}
```


```
Part: Hall
Part: wie\;gehts?
```

Kann mir bitte jemand sagen, was ich falsch mache?


----------

