Wie findet man einen String in regulären Ausdrücken in Python aus einer Liste von Strings?

8

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?

    
Josh Weinstein 29.10.2015, 05:06
quelle

4 Antworten

13
%Vor%

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.

    
vks 29.10.2015, 05:12
quelle
6

Modul regex hat benannte Listen (setzt tatsächlich):

%Vor%

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:

%Vor%

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:

%Vor%     
jfs 29.10.2015 10:19
quelle
1

Mit Ausnahme des regulären Ausdrucks können Sie das Listenverständnis verwenden und hoffen, dass es nicht außerhalb des Themas ist.

%Vor%     
lord63. j 29.10.2015 05:21
quelle
0

Sie sollten sicherstellen, dass die Strings vor dem Kombinieren in eine Regex korrekt entkoppelt werden.

%Vor%     
John La Rooy 29.10.2015 06:02
quelle

Tags und Links