2014-01-19 20 views
5
Schnur oder Leerzeichen beginnen

Ich habe die folgende ZeichenfolgePython Regex übereinstimmen

'abc[123]defgh ijk[456]lm no[78] pq' 

Und ich möchte alle Teile extrahieren, die entweder zwischen dem Beginn der Zeichenfolge und [ oder zwischen Leerzeichen und [. Für die angegebene Zeichenfolge sind dies die Teile 'abc', 'ijk' und 'no'.

Ich habe den folgenden Ausdruck

exp = re.compile(r'\s(.*?)\[') 

Aber ich kann nicht herausfinden, wie man den Anfang der Zeichenfolge als optionalen Ausdruck hinzuzufügen. Wie muss ich den Ausdruck schreiben, um beide Fälle abzudecken?

Antwort

6

Versuchen Sie, diese Muster:

(?:^|\s)(.*?)\[ 

Der Startanker (^) den Anfang der Zeichenfolge (oder eine Zeile in MULTILINE-Modus).

+0

Dank gefolgt, das funktioniert, und nachdem er einen Blick in die Dokumentation mit, Ich verstehe die Syntax auch :-) – stefangachter

1

Ein anderer: nach dem Startzeichen zu finden, suchen Sie nach allem, was nicht ein [ist und zu gewährleisten, ist es durch eine [

(?:^|\s)([^\[]+)(?=\[) 
Verwandte Themen