2017-05-01 11 views
0

Taking Ich versuche, istPython Regex FindAll Too Long

für die gegebene Zeichenfolge alle E-Mails zu finden

hier die Regex:

r"([a-zA-Z0-9_.+-]+(?:\@|\[(?:(?:at|AT|@))\])+[a-zA-Z0-9-]+(?:\.|\[(?:[dtoDTO0\.])+\])[a-zA-Z0-9]+)" 

Stringlänge zu lang ist (~ 2 l). Es dauert zu lange, um alle passenden E-Mails zu finden. Ich verwende gerne das Timeout-Konzept, wenn Regex zu lange dauert. Irgendwelche Vorschläge?

+0

Eine Option könnte eine bessere Regex-Engine wie Re2 sein. Bei Zeitüberschreitungen wäre es wahrscheinlich am besten, einen Prozess für die Regex zu generieren und diesen Prozess dann zu beenden, wenn zu viel Zeit verstreicht. – Lalaland

+0

Können Sie Ihre Eingabe teilen? –

+0

Anstelle von 'findall' können Sie' finditer' verwenden. Wie groß ist Ihre Eingabe? –

Antwort

0

Side-Note: Weißt du, es frustriert mich, "Kommentare" nicht als neuerer Benutzer hinzufügen zu können. Ich glaube nicht, dass meine Antwort eine vollständige Antwort garantiert, aber es könnte hilfreich sein.

Antwort: In diesem Zusammenhang habe ich festgestellt, dass das Betriebssystem oft hier in Frage steht. Auf jedem meiner Windows-Systeme habe ich bemerkt, dass die Textverarbeitung in Python extrem langsam ist. Auf meinen CentOS und Kali Implementierungen ist es sofort. Würde es Ihnen etwas ausmachen, zu erwähnen, welches Betriebssystem Sie verwenden?