2 Stimmen

Was wäre ein guter Regexp, um das Präfix "Ursprüngliche Nachricht" in Gmail zu identifizieren?

Ein Beispiel-Signatur könnte sein:

Am Di, 20. März 2012 um 14:38 Uhr schrieb Johnny Walker :

Und dann folgt die zitierte Antwort. Ich habe das diskrete Gefühl, dass dies jedoch lokal spezifisch ist, was mich als Programmierer traurig macht.

Der Grund, warum ich das frage, ist, weil roundup diese nicht korrekt entfernt, wenn über Gmail auf ein Problem geantwortet wird. Und ich denke, dass origmsg_re die config.ini-Variable ist, die ich zusammen mit keep_quoted_text = no setzen muss, um dies zu beheben.

Aktuell ist es das Standard-origmsg_re = ^[>|\s]*-----\s?Original Message\s?-----$

Bearbeiten: Jetzt verwende ich origmsg_re = ^On[^<]+<.+@.+>[ \n]wrote:[\n], was mit einigen Gmail-Clients funktioniert, die Zeilen umbrechen, die zu lang sind.

1voto

buckley Punkte 12756

Der folgende Regex wird Gmails Präfix auf eine ziemlich sichere Weise abgleichen. Er stellt sicher, dass es 3 Kommas und den Liter Text auf ... gab

On([^,]+,){3}.*?wrote:

Wenn der Regex auf eine nicht unterscheidende Weise passen soll, vergessen Sie nicht, den Modifier hinzuzufügen.

if re.search("On([^,]+,){3}.*?wrote:", subject, re.IGNORECASE):
    # Erfolgreiches Übereinstimmen
else:
    # Übereinstimmungsversuch fehlgeschlagen

Mit freundlichen Grüßen, Buckley

Die Zeichen "On" wortwörtlich abgleichen «On»
Das folgende reguläre Ausdruck abgleichen und das Ergebnis in die Rückverweisnummer 1 erfassen «([^,]+,){3}»
   Genau 3 Mal «{3}»
   Hinweis: Sie haben die Erfassungsgruppe selbst wiederholt. Die Gruppe wird nur die letzte Iteration erfassen. Setzen Sie eine Erfassungsgruppe um die wiederholte Gruppe, um alle Iterationen zu erfassen. «{3}»
   Jedes Zeichen abgleichen, das kein "," ist «[^,]+»
      Zwischen einmal und beliebig oft, so oft wie möglich, zurückgebend, wenn nötig (gierig) «+»
   Das Zeichen "," wortwörtlich abgleichen «,»
Jedes einzelne Zeichen abgleichen, das kein Zeilenumbruchszeichen ist «.*?»
   Zwischen null und beliebig oft, so wenige Male wie möglich, sich bei Bedarf erweiternd (faul) «*?»
Die Zeichen "wrote:" wortwörtlich abgleichen «wrote:»

Erstellt mit RegexBuddy

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X