Sagen wir, ich habe eine Liste von Strings,
%Vor%Ich möchte einen regulären Ausdruck erstellen, bei dem ich zu irgendeinem Zeitpunkt innerhalb einer Gruppe alle Strings, die ich in dieser Liste habe, abgleichen kann:
%Vor%Was wäre der richtige Weg, dies zu tun? Oder müsste man mehrere reguläre Ausdrücke machen und sie alle einzeln an die Zeichenkette anpassen?
Sie können match
nicht verwenden, da es mit start übereinstimmt.Verwenden Sie stattdessen findall
.
Ausgabe: ['fun']
Mit search
erhalten Sie nur die erste Übereinstimmung. Verwenden Sie stattdessen findall
.
Verwenden Sie auch lookahead
, wenn überlappende Treffer nicht am selben Punkt beginnen.
Modul regex
hat benannte Listen (setzt tatsächlich):
Hier ist words
nur ein Name, Sie können stattdessen alles verwenden, was Sie möchten.
.search()
methods wird anstelle von .*
vor / nach der benannten Liste verwendet.
Um benannte Listen mit dem Modul re
von stdlib zu emulieren:
re.escape()
wird verwendet, um Regex-Meta-Zeichen wie .*?
in einzelnen Wörtern zu entkommen (um die Wörter wörtlich zu vergleichen). sorted()
emuliert regex
behavior und stellt die längsten Wörter zuerst unter die Alternativen, vergleichen:
Sie sollten sicherstellen, dass die Strings vor dem Kombinieren in eine Regex korrekt entkoppelt werden.
%Vor%Tags und Links python string regex python-3.x