regulärer Ausdruck zum Parsen einer E-Mail Signatur

Status
Nicht offen für weitere Antworten.
M

MarcelM

Gast
Hallo zusammen,

ich habe im Rahmen meiner Ausbildung die Aufgabe bekommen ein Programm zu entwickeln, bei dem man mittels eines Textfelds einen E-Mail Text samt Signatur kopieren kann. Die Signatur soll dabei nach Name, Vorname, Internetadresse, E-Mail, Adresse (Straße, Hausnummer, plz, Ort) aufgeteilt werden.

Anschließend sollen diese Attribute in einer Oracle Datenbank konvertiert werden...

Mein Problem ist dabei, die Attribute zu filtern. Das einzigste was ich bis jetzt erreicht habe, ist die Filterung der E-Mail Adresse mit folgendenm regulären Ausdruck:

Code:
Pattern email = Pattern.compile("[_a-zA-Z0-9-]+(\\.[_a-zA-Z0-9-]+)*@([_a-zA-Z0-9-]+\\.)+([a-zA-Z]{2,3})");

Ich habe aber momentan absolut keine Idee, wie ich die restlichen Attribute filtern soll. Insbesondere Vorname und Nachname.... aber auch die anderen Attribute...

Wenn ihr dazu vielleicht schon bekannte Lösungen kennt, wäre es schön, wenn ihr mir die mitteillen könntet....


Generell bin ich über jeden Hilfe dankbar....
 

Bleiglanz

Gesperrter Benutzer
Die Signatur soll dabei nach Name, Vorname, Internetadresse, E-Mail, Adresse (Straße, Hausnummer, plz, Ort) aufgeteilt werden.
Frage: was ist die Signatur einer email? hab ich ja noch nie gehört, dass bei einer email irgendwo hausnummer plz ort dabei sind??

meist du eine vcard als attachment?

oder die "erweiterte Schreibweise" so a la

"vorname nachname" <vornamenachname@domain.de>
 

byte

Top Contributor
signatur is i.d.r. der teil des bodies, der durch --(leerzeichen) vom content getrennt wird
 
M

MarcelM

Gast
Na ja also die Signatur sähe bspw folgendermaßen aus:

IT-Service GmbH
Marcel Muster
Musterstr. 10
12345 München
mailto:Marcel.Menze@ewe.de
Homepage: http://www.ewetel.de

Den Text den ich zu Filtern hätte wäre dann ungefähr folgendermaßen....




Guten Tag,

bla blaasdasdasd

adsdsdadasdasdasd
asdsad asd asd984324a asdsasad

asdsad asd432432 sad asd
324 sd ad

as sasd dad324432 asd

Mit freundlichen Grüßen

IT-Service GmbH
Marcel Muster
Musterstr. 10
12345 München
mailto:Marcel.Menze@ewe.de
Homepage: http://www.ewetel.de

Diesen gesamten Inhalt hole ich mir über ein Textfeld und lese es in einen String ein, den jetzt halt noch den oben genannten Kriterien filtern möchte.
 

byte

Top Contributor
problem ist, woher weisst du, wann die signatur anfängt? es gibt wohl keinen regulären ausdruck, der erkennt, wann z.b. der firmenname anfängt. entweder du kannst dich auf einen gängigen seperator verlassen, wie z.b. -- (doch selbst da halten sich nicht alle email clients dran) oder du musst halt mehr oder weniger raten. da die email anscheinend aus einem einzigen eingabefeld kommt, wird es wohl auf letztere variante hinauslaufen. evtl. die postleitzahl auslesen (also auf 5 aufeinander folgende zahlen prüfen) und dann die darüberliegenden zeilen mitnehmen? oder versuchen, GmbH/ AG/ Firma etc. zu filtern oder Str. / Straße ... auf jeden Fall werden die Daten nicht sicher sein.

ansonsten halt zusätzliche eingabefelder machen, wo diese daten angegeben werden können. dann könnt ihr die daten auch vernünftig einpflegen.
 

Bleiglanz

Gesperrter Benutzer
puu, das ist also die signatur?!

leider ist das überhaupt nicht standardisiert, das macht die sache schon schwierig...

Bei

"Mit freundlichen Grüßen" / "mfg" / "Ciao" / "Bis dann" / .../ "Gruss"

abschneiden, und die Zeilen danach mit regulären Ausdrücken durchackern...

oder besser zeilenweise einlesen und nur die letzten 10 zeilen oder so beachten

die mit @ ist wohl die email

die mit http oder www ist wohl die mit der url

die mit .+(str.|straße|strasse)\s [0-9]* wahrscheinlich die strasse

die mit [0-9]{5}\s.* wohl die mit dem ort

name vorname hoffentlich in der zeile davor



aber so richtig einfach ist das nicht!!
 
M

MarcelM

Gast
ja genau das ist mein Problem....

Ich denke ich werde sonst bei der Aufgabe von einer festen Formatvorlage ausgehen...dass die Signatur halt einem bestimmten Format entsprechen muss. Ansonsten sehe ich dort auch so gut wie keine Möglichkeit zuverlässig an die Daten heran zu kommen.


Schönen Dank schon mal für die Antworten....

Wenn noch jemand eine Idee hat, immer raus damit :wink:
 
M

MarcelM

Gast
Aber wie soll ich denn die regulären Ausdrücke formulieren ?

Bei der Staße + Hausnummer kan nich ja auch nicht nach .+(str.|straße|strasse)\s [0-9]* suchen, da es ja auch Straßen gibt, die halt net den Teil "Straße" oder wie auch immer in ihrem Namen haben....

Ich hab noch nicht wirklich Erfahrung mit regulären Ausdrücken....Habe für die E-Mail^^ schon sehr lange gebraucht...
 

Bleiglanz

Gesperrter Benutzer
Anonymous hat gesagt.:
Aber wie soll ich denn die regulären Ausdrücke formulieren ?

Bei der Staße + Hausnummer kan nich ja auch nicht nach .+(str.|straße|strasse)s [0-9]* suchen, da es ja auch Straßen gibt, die halt net den Teil "Straße" oder wie auch immer in ihrem Namen haben....

Ich hab noch nicht wirklich Erfahrung mit regulären Ausdrücken....Habe für die E-Mail^^ schon sehr lange gebraucht...
na ja, das braucht eben ein bissl bis man das gelernt hat; ohne übung ist da nichts zu machen!

(str.|straße|strasse|weg|hof|haus|palais|street|haufen)?

aber vorsicht, das mit dem .+ ist käse, weil dann alles "weggematcht" wird!!

nimm
? einmal oder keinmal
* beliebig oft
+ mindestens einmal, aber beliebig oft
{n,m} mindestens n mal, maximal m mal

das Problem an und für sich

"Finde einen Regex, der eine Strassenbezeichnung mit oder ohne Hausnummer zuverlässig erkennt"

ist unlösbar (wegen der blöden Wirklichkeit), du musst dich schon mit 80-90% Erkennungsquote zufriedengeben; aber davon musst du bei der gesamtaufgabe eh ausgehen
 

byte

Top Contributor
MarcelM hat gesagt.:
... da es ja auch Straßen gibt, die halt net den Teil "Straße" oder wie auch immer in ihrem Namen haben....

genau das ist halt das problem. es gibt keinen regulären ausdruck, der JEDE straße automatisch erkennen kann, weil straßennamen nicht nach einem standardisierten muster funktionieren. 95% der straßennamen haben zwar Str./Straße/Strasse/Allee/Weg/Gang im Namen, aber es gibt halt welche, wo es nicht so ist. und diese namen rutschen dann immer durch die grammatik.

wenn ihr über ein formularfeld auf einer internetseite arbeitet und auf sicherem wege die daten einpflegen wollt, braucht ihr entsprechende eingabefelder für name, email, adresse, firma, etc.

anders gehts halt nicht bzw. nicht so gut, dass es in 100% der fälle funktioniert.
 
B

bygones

Gast
Die Straße kann man auch daran erkennen, das Buchstaben Leerzeichen Zahlen und mögl. nochmal ein buchstabe kommen...

aber wie schon gesagt, ist alles andere als 100% sicher, da es keinen Standart gibt
 
M

MarcelM

Gast
So ich hab jetzt alle Ausdrücke soweit ausformuliert und die funktionieren auch unter Berücksichtigung einer bestimmten Formeinhaltung.

Ich habe nur noch keine Idee, wie ich den Firmennamen aufschlüsseln soll...

Es ist ja nicht zwangsläufig immer ein xy GmbH oder xy AG oder xy KG etc. vorhanden....

Oder steht in der Regel auch bei kleineren Betrieben bspw. eingetragener Kaufmann, e.k., etc. ?


Oder habt ihr noch eine andere Idee, wie man den Firmennamen möglichst eindeutig identifizieren kann ?
 
B

bygones

Gast
MarcelM hat gesagt.:
Oder habt ihr noch eine andere Idee, wie man den Firmennamen möglichst eindeutig identifizieren kann ?
behaupte mal dass das nicht geht, eben weil es keine Konvention gibt... es ist der erste eintrag das Signatur - wäre eine möglichkeit.

oder auswendiglernen. versuchen alle endungen sich zu merken und alle Endungen darauf loslassen.
 
G

Guest

Gast
hmm joa das ist wirklich eine sher schwammige Aufgabe...

ich habs jetzt erstmal so gelöst, dass ich nach Stichworten wie Gmbh etc. suche und den Part davor in der Zeile dazunehme und das wars... Hat zwar auch eine sehr geringe Trefferquote aber nützt ja nix...
 

Bleiglanz

Gesperrter Benutzer
würd ich auch so machen: möglichst viele Endungen

KG AG GmbH GbR

und alles was in der Zeile davor ist

Ggf. würde ich aber auch versuchen, die erste Zeile Gnadenlos zum Firmennamen zu machen

IrgendeineZeile // was kann hier schon stehen?
STRASSE ERKANNT
PLZORT ERKANNT
 
M

MarcelM

Gast
Ich habe gerade ein kleines Problem...

wenn ich nach einer Straße suche benutze ich momentan folgenden regex:

Code:
("([A-Z]{1}[a-z]*)([0-9]{1,3}\\s[A-Za-z]{1})|([A-Z]{1}[a-z]*)([0-9]{1,3}[A-Za-z]{1})|([A-Z]{1}[a-z]*)\\s([0-9]{1,3})");

Das dunktioniert auch fast....

Mein Problem ist nur, dass ich damit kein ß erkenne. Also alle Namen mit Endungen wie Straße, etc. fallen raus.. gibt es noch eine Möglichkeit das mitzunehmen ?[/quote]
 

Bleiglanz

Gesperrter Benutzer
verwende nicht A-Za-z usw. sondern lieber die vordefinierten Patterns

z.B. \w oder sowas wie

\p{Lower} A lower-case alphabetic character: [a-z]
\p{Upper} An upper-case alphabetic character:[A-Z]
\p{ASCII} All ASCII:[\x00-\x7F]
\p{Alpha} An alphabetic character:[\p{Lower}\p{Upper}]
\p{Digit} A decimal digit: [0-9]
\p{Alnum} An alphanumeric character:[\p{Alpha}\p{Digit}]
\p{Punct} Punctuation: One of !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
\p{Graph} A visible character: [\p{Alnum}\p{Punct}]
\p{Print} A printable character: [\p{Graph}\x20]
\p{Blank} A space or a tab: [ \t]
\p{Cntrl} A control character: [\x00-\x1F\x7F]
\p{XDigit} A hexadecimal digit: [0-9a-fA-F]
\p{Space}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Einfacher regulärer Ausdruck (RegEx) für E-Mail-Adressen Java Basics - Anfänger-Themen 2
B Regulärer Ausdruck Java Basics - Anfänger-Themen 12
D Regulärer Ausdruck Java Basics - Anfänger-Themen 8
B Regulärer Ausdruck Java Basics - Anfänger-Themen 3
C Regulärer Ausdruck matched nicht Java Basics - Anfänger-Themen 2
B Regulärer Ausdruck gesucht Java Basics - Anfänger-Themen 6
M regulärer Ausdruck funktioniert nicht Java Basics - Anfänger-Themen 6
X Regulärer Ausdruck für einen FileNameFilter Java Basics - Anfänger-Themen 2
S regulärer Ausdruck HTML Java Basics - Anfänger-Themen 5
turmaline Ein regulärer Ausdruck für HTML-Sonderzeichen Java Basics - Anfänger-Themen 3
B regulärer Ausdruck mit Metazeichen Java Basics - Anfänger-Themen 4
D regulärer Ausdruck: ^ $ Java Basics - Anfänger-Themen 6
F Regulärer Ausdruck warum false ? Java Basics - Anfänger-Themen 3
O Regulärer Ausdruck gesucht Java Basics - Anfänger-Themen 2
S Regulärer Ausdruck - alles was keine Zahl ist entfernen Java Basics - Anfänger-Themen 2
S regulärer ausdruck zum zählen eines wortes Java Basics - Anfänger-Themen 4
K Regulärer Ausdruck Java Basics - Anfänger-Themen 7
L Regulärer Ausdruck Java Basics - Anfänger-Themen 2
M regulärer Ausdruck Java Basics - Anfänger-Themen 3
X Regulärer Ausdruck Java Basics - Anfänger-Themen 6
E regulärer Ausdruck -> wo ist der Fehler Java Basics - Anfänger-Themen 9
G regulärer Ausdruck alles was zwischen ' ' steht Java Basics - Anfänger-Themen 4
P Zeile als regulärer Ausdruck Java Basics - Anfänger-Themen 5
G Regulärer Ausdruck: gefunden und gleichzeitig nicht gefunden Java Basics - Anfänger-Themen 5
T Regulärer Ausdruck Java Basics - Anfänger-Themen 4
G regulärer ausdruck zur überprüfung von ip-adresse? Java Basics - Anfänger-Themen 13
T Regulärer Ausruck mit replace Java Basics - Anfänger-Themen 3
W Suche nach strings zwischen eckigen Klammern mittels regulärer Ausdrücke Java Basics - Anfänger-Themen 3
W Reguläre Ausdruck Java Basics - Anfänger-Themen 6
hebein PDF Ausdruck auf Drucker - Probleme mit Format Java Basics - Anfänger-Themen 17
K Warum zeigt dieser reguläre Ausdruck true an? Java Basics - Anfänger-Themen 1
berserkerdq2 Wie würde man einen regulären Ausdruck in Java schreiben, der prüft, dass zwei bestimtme Zahlen nicht nebeneinadner sind? Java Basics - Anfänger-Themen 3
KogoroMori21 Boolscher Ausdruck Java Basics - Anfänger-Themen 15
C Ausdruck Java Basics - Anfänger-Themen 4
E Boolescher Ausdruck Java Basics - Anfänger-Themen 1
M Regex-Ausdruck: Alle Zeichen bis auf ein bestimmtes erlauben (p{L}) Java Basics - Anfänger-Themen 5
G Warum ist hier ein Lamda-Ausdruck möglich Java Basics - Anfänger-Themen 2
O Lambda Ausdruck mit Wildcard einschränken Java Basics - Anfänger-Themen 5
F Ist das ein korrekter Regex-Ausdruck? Java Basics - Anfänger-Themen 12
B Interface Java Lambda Ausdruck. Java Basics - Anfänger-Themen 11
G Boolschen Ausdruck true machen Java Basics - Anfänger-Themen 2
F Ausdruck wirft unerwarteten Error Java Basics - Anfänger-Themen 2
K Regulären Ausdruck in Java abbilden Java Basics - Anfänger-Themen 4
M Lambda - Ausdruck zu Beschreibung erstellen Java Basics - Anfänger-Themen 7
D Java Ausdruck erzeugen / Formular Java Basics - Anfänger-Themen 4
B Boolscher Ausdruck für mich unverständlich Java Basics - Anfänger-Themen 7
A regulären Ausdruck mit Hilfe der Klasse Scanner in einem String finden Java Basics - Anfänger-Themen 2
J Frage zu bestimmtem Ausdruck Java Basics - Anfänger-Themen 2
G Lambda Ausdruck: Welche Methode ist die Richtige? Java Basics - Anfänger-Themen 1
C Auswertung Ausdruck mit Punknotation + Objekt als Parameter Java Basics - Anfänger-Themen 3
M Arithemtischer Ausdruck unklar Java Basics - Anfänger-Themen 2
A Lässt sich dieser Ausdruck irgendwie einfacher schreiben? Java Basics - Anfänger-Themen 4
H Regulären Ausdruck automatisch erstellen Java Basics - Anfänger-Themen 5
T Erste Schritte Im arithm. Ausdruck Zeichen trennen? Java Basics - Anfänger-Themen 13
D Boolescher Ausdruck - Problem Java Basics - Anfänger-Themen 6
R Suche Regex Ausdruck für HTML Java Basics - Anfänger-Themen 11
E Hilfe bei einem Regulären Ausdruck Java Basics - Anfänger-Themen 7
S Einfaches Regulaerer Ausdruck Problem Java Basics - Anfänger-Themen 7
3 3. Element mit regulären Ausdruck suchen Java Basics - Anfänger-Themen 12
M regex-Ausdruck irgendein Buchstabe 1 mal Java Basics - Anfänger-Themen 8
S Was bedeutet dieser ausdruck? Java Basics - Anfänger-Themen 9
S String nach Ausdruck durchsuchen und Folgeattribut ausgeben Java Basics - Anfänger-Themen 3
H Ausdruck vereinfachen Java Basics - Anfänger-Themen 8
J Datentypen String splitten ohne festen Ausdruck Java Basics - Anfänger-Themen 8
H while schleife ohne ausdruck Java Basics - Anfänger-Themen 7
H Datei durchsuchen mit Regex-Ausdruck Java Basics - Anfänger-Themen 14
O Gibt es dafür einen regulären Ausdruck? Java Basics - Anfänger-Themen 9
O RegEx-Ausdruck gesucht Java Basics - Anfänger-Themen 2
C bedingten ausdruck zu if-anweisung Java Basics - Anfänger-Themen 3
O Mal wieder ein Regex-Ausdruck gesucht! Java Basics - Anfänger-Themen 5
R Regulären Ausdruck geht nicht Java Basics - Anfänger-Themen 2
J Bitte um Erklärung für einen Java-Ausdruck Java Basics - Anfänger-Themen 8
T Wie sieht ein '.' im regulären Ausdruck aus? Java Basics - Anfänger-Themen 2
G Wie erstellt man komplexen regulären Ausdruck Java Basics - Anfänger-Themen 5
G Boolscher Ausdruck Java Basics - Anfänger-Themen 11
R Reguläre Ausdruck definieren Java Basics - Anfänger-Themen 3
G Substrings in regulärem Ausdruck Java Basics - Anfänger-Themen 2
F Boolescher Ausdruck (String) in boolean konvertieren Java Basics - Anfänger-Themen 5
F Der "super" Ausdruck Java Basics - Anfänger-Themen 4
S Ausdruck zur Laufzeit auswerten Java Basics - Anfänger-Themen 10
G Was zum Teufel ist denn so ein Ausdruck"variabel : vari Java Basics - Anfänger-Themen 8
M Scanner soll nach einem Ausdruck splitten Java Basics - Anfänger-Themen 2
R Ausdruck Java Basics - Anfänger-Themen 2
J Was sagt mir dieser Ausdruck? Java Basics - Anfänger-Themen 9
S Ausdruck? Java Basics - Anfänger-Themen 5
Beowend String zu Date parsen Java Basics - Anfänger-Themen 1
W Strings und das parsen Java Basics - Anfänger-Themen 8
R String index out of range: -1 beim Datei Parsen Java Basics - Anfänger-Themen 15
K String nach bestimmtem Muster parsen Java Basics - Anfänger-Themen 3
K Datentypen String zu Integer parsen Java Basics - Anfänger-Themen 2
L Jackson JSON parsen Java Basics - Anfänger-Themen 7
7.7GradOst Datentypen Stringeingabe aus z.B. "4,d,<" parsen Java Basics - Anfänger-Themen 7
D InputStream parsen und als Bilddatei abspeichern Java Basics - Anfänger-Themen 1
M JAVA String schnell parsen Java Basics - Anfänger-Themen 14
K Methoden Datum parsen Java Basics - Anfänger-Themen 16
V Java Regex richtig parsen Java Basics - Anfänger-Themen 2
J Rekursives Parsen (ohne Reg Expressions) Java Basics - Anfänger-Themen 8
L Beliebigen Datentypen aus String parsen Java Basics - Anfänger-Themen 6
L Datei aus Multipart parsen und speichern, seltsam codiert? Java Basics - Anfänger-Themen 16
J String aus Json File parsen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben