Seite 1 von 1

komplexer regulärer Ausdruck

Verfasst: Montag 26. Dezember 2005, 16:11
von alexandra
Servus,
leider bin ich total am Verzweifeln da ich es seit Tagen nicht hinbekomme folgenden reg. Ausdruck hinzubekommen.
Er hat in Worten ausgedrückt folgendes Muster:
-vor einem bestimmten Wort ('def') können 0 bis 2 Wörter stehen.[?]
-keines dieser voranstehenden Wörter darf 'tst' oder 'tzt' heißen[?]
-dann kommt also das gegebene Wort: 'def'
-nachfolgend soll alles ermittelt/ausgelesen/gematcht werden bis zum nächsten Punkt. den geeigneten Regexp hierfür habe ich bereits...

Die mit [?] versehenen Angaben bekomme ich einfach nicht hin. Ich hoffe, die Beschreibung ist eindeutig und Ihr seid in der Lage und Stimmung mir hierbei zu helfen. Denn ich schaffs einfach nicht. Hab schon versucht mit <!? uvm...
Danke

Re: komplexer regulärer Ausdruck

Verfasst: Montag 26. Dezember 2005, 19:27
von joe
Hi!
alexandra hat geschrieben: Hab schon versucht mit <!? uvm...
Wenn, dann eher mit (?<!...). Aber ich denke, das ist mit einem regexp nicht zu lösen. Ermittle besser die wörter vorm def mit dem regexp und prüfe sie dann ab.

Ich würde da aber auf regexps verzichten. Folgendes wird deinen anspruch sicherlich nicht gerecht, da auch einiges infos fehlen (Was ist für dich ein wort? Was trennt die wörter, ein leerzeichen, beliebige whitespaces in beliebiger anzahl? etc.).

Code: Alles auswählen

text = "abc def ghi jkl. trullala"
text = text.split(".")[0]
woerter = text.split(" ")
pos = woerter.index("def")
if pos < 3 and not set(("tst","tzt")) & set(woerter[:pos]):
    print text.split(" ",pos+1)[-1]
Das berücksichtigt nicht, mehrfache whitespaces hintereinander und crasht bei fehlenden def und punkt.
joe