replaceAll

  • Themenstarter Themenstarter Triple Why
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
T

Triple Why

Gast
Hi,

eigentlich wollte ich nur kurz was ausprobieren, während ich was anderes, längeres am schreiben war. (tolles Deutsch, ich weiß)
Nur verwirrte mich das Ergebnis total...

Also ich schrieb folgendes:

Code:
public class test
{
	public static void main(String[] args)
	{
		String s = "((()))";
		s = s.replaceAll("()", "");
		System.out.println(s);
	}
}


Ich weiß, man kann hier auchn paar Zeilen weglassen, ich habs aber so ausgeschrieben, weil es alles in einer Zeile nicht funktioniert hat. Nunja, in 3 Zeilen tuz das selbe.
Was meine Verwirrung aber Perfekt machte ist die Tatsache, dass das ganze funktioniert, sobald man z.B. Buchstaben nimmt also meinetwegen "AAABBB" und dass ich eine Wunderschöne Exception bekomme, mit der ich so garnix anzufangen weiß, sobald ich einzelne Klammern ersetzten will, also z.B. s.replaceAll(")", "(");.
Meine Fehlermeldung sieht dann ungefähr so aus:

Exception in thread "main" java.util.regex.PatternSyntaxException: Unmatched closing ')'

So, meine Fragen also: Was soll das heißen, warum tut das das und wie kann mans umgehen?

yYy
 
replace wandelt doch auch in einen regex um oder ?

Klammern sind Sonderzeichen bei regex, meinst du wirklich () musst du diese maskieren also \( \)
 
äh... wie sieht denn ein regex in java aus?

replace erwartet im übrigen chars, was weder "()" noch "" sind.

und replaceAll("\( \)", "") funktioniert auch nicht, weil mein eclipse meint, das gäbs nicht.
 
regex sind ueberall die selben....

\ ist die normale maskierung... da aber auch \t und \n sonderzeichen sind muss man \\ schreiben

also \\) bzw \\(

dann klappt es auch
 
okay...
das klappt also schon mal.
nur... hä?
\\ wär ein einfacher Backslash. Warum sucht er nicht nach \) ?
 
Triple Why hat gesagt.:
\\ wär ein einfacher Backslash. Warum sucht er nicht nach \) ?
Weil \ auch in Regex das Maskierungszeichen ist.
Führ auch zu sehr witzigen Konstrukten wenn man nach \ oder noch schlimmer: \\ suchen will
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben