komplexer regulärer Ausdruck

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
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
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
Antworten