2 Stimmen

Email-Inhalt mit regulären Ausdrücken analysieren

Ich erhalte jeden Tag Tausende von E-Mails und möchte den Inhalt/Body dieser E-Mails analysieren, um sie in eine Datenbank zu laden.

Mein Problem ist, dass ich zurzeit den E-Mail-Body manuell analysiere und ich würde gerne die Logik auf einen Regulären Ausdruck in C# ändern.

Hier ist der Body der E-Mails:


Gentilissima Agenzia Nexity Residenziale

il nostro utente:

Sig./Sig.ra :Pablo Azorin

Email: pabloazorin@gmail.com

Tel.: 02322-498900

sta cercando un immobile con le seguenti caratteristiche:

Categoria: Residenziale

Tipologia: Villa

Tipo di contratto: Vendita

Comune: Assago Prov. Milano

Zona: non specificata

Fascia di prezzo: non specificata


Ich muss den Text in fett hervorgehobenem Text extrahieren und dachte, dass ein RegEx das Richtige dafür ist...

Ich freue mich auf Ihre Vorschläge, wie ich es zum Laufen bringen kann.

Vielen Dank!

--Pablo

3voto

Jan Goyvaerts Punkte 20683

Unter der Annahme, dass die Teile in Ihrer E-Mail, die nicht fett sind, immer in allen Ihren E-Mails auf die gleiche Weise auftreten, können Sie alle Teile aus Ihrer E-Mail leicht mit dem regulären Ausdruck abrufen:

Sig\./Sig\.ra :(.*)

Email: (.*)

Tel\.: (.*)

sta cercando un immobile con le seguenti caratteristiche:

Categoria: (.*)

Tipologia: (.*)

Tipo di contratto: (.*)

Comune: (.*)

Zona: (.*)

Fascia di prezzo: (.*)

In C#

Regex regexObj = new Regex(@"Sig\./Sig\.ra :(.*)

Email: (.*)

Tel\.: (.*)

sta cercando un immobile con le seguenti caratteristiche:

Categoria: (.*)

Tipologia: (.*)

Tipo di contratto: (.*)

Comune: (.*)

Zona: (.*)

Fascia di prezzo: (.*)");
Match matchObj = regexObj.Match(subjectString);
string Sig = matchObj.Groups[1].Value;
string Email = matchObj.Groups[2].Value;
// und so weiter, um alle anderen Teile zu erhalten

2voto

Kibbee Punkte 64039

Lese Meister der regulären Ausdrücke. Es wird dir alles beibringen, was du brauchst, um dieses und andere ähnliche Regex-Probleme zu lösen, und dir genug Verständnis und Einblick geben, um mit dem Schreiben viel komplizierterer regulärer Ausdrücke zu beginnen.

0 Stimmen

Vielen Dank für Ihren schnellen Kommentar! Ich werde mir dieses Buch in Kürze ansehen, aber in der Zwischenzeit muss ich es so schnell wie möglich erledigt haben. Können Sie mir bitte einen Rat geben, wie ich es umsetzen soll? Prost, - Pablo

2voto

Carlos Punkte 21

Für den E-Mail-Download habe ich Mailbee .Net-Objekte verwendet. Diese Bibliothek ist ziemlich einfach zu bedienen und gut dokumentiert. Wenn Sie jedoch das Programmieren vermeiden möchten, können Sie auch einen E-Mail-Parser wie EmailParser2Database verwenden.

1voto

Wenn die E-Mails immer im gleichen Format vorliegen, können Sie dies auf verschiedene Arten tun. Eine einfache Möglichkeit besteht darin, am Zeilenumbruch zu teilen und auf jeder Zeile einen Teilstring zu nehmen, der nach dem Label beginnt.

Mit Regexen würden Sie wahrscheinlich einen Regex erstellen, der eine Reihe von benannten Captures erstellt. Sie können dann auf das Groups-Eigenschaft des Treffers indexieren, um den Wert aus ihm herauszuholen. Das ist natürlich etwas komplexer.

0 Stimmen

Die substring/IndexOf() Methode wäre auch schneller als das Erstellen eines komplexen Regex.

1voto

Karim Punkte 5917

Ich denke, es wäre viel besser, diesen String in ein Array von Zeilen aufzuteilen Du kannst ein Wörterbuch mit allen Titeln als Schlüssel initialisieren und du wirst jede Zeile nach dem Titel aus dem Wörterbuch ("E-Mail:" zum Beispiel) durchsuchen und dann das Ergebnis zurück in das Wörterbuch als Wert setzen Am Ende hast du ein Wörterbuch mit allen Titeln und Werten. Ich denke, dafür brauchst du kein Regex. tatsächlich wird die Reihenfolge der Titel auf diese Weise keine Rolle spielen.

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