2017-06-06 4 views
0

Ich versuche Regex zu verwenden, um einige Texte aus Textdaten zu extrahieren. Da einige der Regex-Muster komplex werden, wollte ich die Lesbarkeit des Codes einfach halten. Hier ist ein Beispiel von dem, was ich getan habe.Gebäudekomplex RegexMuster mit einfachen Mustern

pattern3 = re.compile("[D|d]escription(:)?(\n)+(=*)(\n)+") 
pattern4 = re.compile("[D|d]esired [A|a]ction(:)?((\n)+)(=*)| [R|r]equired [A|a]ction(:)?((\n)+)(=*)") 

pattern = re.compile(pattern3 | pattern4) 

Aber ich bekomme Fehler. Wie baue ich komplexe Muster aus diesen kleinen Mustern? Ich benutze das Regex-Modul von Python. Eigentlich wollte ich auch pattern4 auflösen. Aber wieder hat es nicht funktioniert.

+2

Der Fehler ist vermutlich 'Typeerror: nicht unterstützte Operandtyp (e) für |: '_sre.SRE_Pattern' und‚_sre.SRE_Pattern''. Wenn Sie die Lesbarkeit verbessern möchten, verwenden Sie 're.VERBOSE' und mehrzeilige Strings. – jonrsharpe

Antwort

1

Erste Vermutung: die Saiten kombinieren, nicht die Muster

import re 

pattern3_str = "[D|d]escription(:)?(\n)+(=*)(\n)+" 
pattern3 = re.compile(pattern3_str) 
pattern4_str = "[D|d]esired [A|a]ction(:)?((\n)+)(=*)| [R|r]equired [A|a]ction(:)?((\n)+)(=*)" 
pattern4 = re.compile(pattern4_str) 

pattern = re.compile(pattern3_str + "|" + pattern4_str)