2010-03-08 12 views
5

Bezug zu meinem previous question zu extrahieren, habe ich eine Zeichenfolge auf folgendes Format:Regulärer Ausdruck Text zwischen entweder quadratisch oder geschweiften Klammern

this {is} a [sample] string with [some] {special} words. [another one] 

Was den regulären Ausdruck ist die Worte innerhalb jeden Platzes zu extrahieren oder geschweifte Klammern, d.

{is} 
[sample] 
[some] 
{special} 
[another one] 

Hinweis: In meinem Anwendungsfall können Klammern nicht verschachtelt werden. Ich möchte auch die umschließenden Zeichen behalten, damit ich bei der Bearbeitung der Ergebnisse den Unterschied zwischen ihnen feststellen kann.

+0

Was passiert, wenn die Zeichenfolge 'blah [{] blah {]}'? – kennytm

Antwort

7

einfach oder (|) die verschiedenen Dinge, die Sie wollen, zusammen passen:

\[.*?\]|\{.*?\}

2

Dies scheint zu funktionieren:

[[{].*?[}\]] 

Oder diese:

\[.*?\]|{.*?} 

Wenn Sie die Fälle in den Kommentaren unten erwähnt fangen wollen.

Sie können einen Online-Regex-Tester verwenden, um diese Dinge auszuprobieren. Ich denke, http://gskinner.com/RegExr/ ist eine der benutzerfreundlicheren Optionen.

+1

Dies schlägt bei [...] fehl. –

+0

Bearbeitet, um ein überflüssiges '\' zu entfernen. –

+0

@Robert, sagte er, dass das nicht in seinem Text passiert, oder? –

Verwandte Themen