Regex für geschweifte Klammern?

Extremefall

Bekanntes Mitglied
Hallo,
ich habe leider noch ein paar Probleme mit dem Regex Befehl und hoffe, dass ihr mir weiterhelfen könnt. Wie kann ich nach einem String suchen, der mit { anfängt und } aufhört. Ein kleiner Versuch war folgendes:
Java:
/^\{|\}+$/

Die Anleitungen im Web haben mir leider noch nicht weitergeholfen. Könnt ihr mir sagen, wie der Befehl lauten müsste und warum so?

MfG
 
ich würde nach
Code:
\{.*\}
suchen

edit: zur Frage, warum: weil man mit
Code:
.*
alle Zeichen, egal ob Buchstabe, Zahl, Sonderzeichen oder was auch immer, erfasst, die zwischen den { } stehen
 
Zuletzt bearbeitet:
Müsste so gehen:
Code:
\{.*\}
Wenn du es als String hast, musst du die Backslashes nochmal extra escapen.

Edit: zu spät…
 
Hab mir angeschaut, was es ausgibt, aber kann mir gerade nicht erklären, warum das so ist. Wie kann man das logisch erklären? Denn ob mit oder ohne ?, der reguläre Ausdruck matched doch eigentlich immer den gesamten Ausdruck "{test1}{test2}" und nicht erst "{test1}" und dann "{test2}" ???:L
 
Das ? hat bei regulären Ausdrücken mehr als eine Bedeutung, z.B. als Quantor wie + oder *

Quantoren - speziell + und * - sind standardmässig "gierig". D.h. es wird versucht soviel wie möglich auf einmal abzudecken. Hier kommt eine weitere Funktion des ? ins Spiel. Um nur die minimale Übereinstimmung abzudecken, kann einem Quantor ein ? nachgestellt werden.

Im zuvor geposten Bsp. bedeutet das, dass der RegEx mit ? nur bis zum nächsten Vorkommen von } "sucht".
Wenn es darum geht nur festzustellen, ob ein bestimmter Ausdruck in einer Zeichenkette vorkommt, ist es meist nicht notwendig. Wenn aber die Zeichenkette mittels RegEx analysiert oder zerlegt werden soll, macht es doch einen Unterschied ;-)
 

Zurück
Oben