Auf Thema antworten

Im Prinzip ist es ganz einfach.

Ich würd mir mal diese Seite durchlesen:

Java - Regular Expressions


Hier hättest du nochmal eine Übersicht:

http://www.cheat-sheets.org/saved-copy/regular_expressions_cheat_sheet.png

Ansonsten einfach mal nach "regulären Ausdrücken" googeln.


In meinem Beispiel:

[code=Java]s = s.replaceAll("\\s+(?=[^()]*\\))", "");[/code]


Wäre der eigentliche reguläre Ausdruck ja nur:

[code=Java]\\s+(?=[^()]*\\))[/code]


\\s steht für ein Whitespace.

+ heißt, dass beliebig viele (aber mindestens 1) Whitespace vorkommen müssen.

?= ist eine Lookahead-Assertion.

[^()] heißt, dass ein beliebiges Zeichen kommen kann, außer ( oder )

* bedeutet, dass der Block 0 Mal oder beliebig oft kommen kann.

\\) heißt, dass danach eine schließende Klammer kommt

und die letzte ) beendet die Lookahead-Assertion.


Es wird also praktisch nach einem String gesucht, der aus beliebig vielen Whitespaces besteht. Diese Whitespaces werden aber nur durch "" ersetzt, wenn die Lookahead-Assertion erfüllt ist, also wenn danach beliebig viele Zeichen außer den Klammern kommen und danach eine schließende Klammer (was ja bedeutet, dass die Whitespaces innerhalb einer Klammer sind).


Am Anfang ist das vllt etwas verwirrend, aber man kommt schnell rein und es kann sehr nützlich sein :)



Oben