Fragen zur Verwendung von regulären Ausdrücken

Solltest Du dann im rechten Teil der &&-Abfrage nicht auch auf "tokens[i+1]" prüfen ??? :cool:
Sorry hatte ich vergessen, in dem Post zu korrigieren, da ich neben bei an meinem Code bastle.
natürlich sollte das tokens[i+1] heißen :)
Aber es funktioniert nicht.

BTW:
{1,2} und gleichzeitig '?' ist vermutlich Murks!
{1,2} besagt "1 oder 2"
? besagt "0 oder 1"

zudem: durch "[Ee-]{1,2}" ist auch der Ausdruck "Eemail" gültig !!
Das ist völlig richtig der Ausdruck Eemail wäre dann auch gültig. Mit diesem Ausdruck möchte ich alle Key-Word-Kombinationen wie email, Email, e-mail E-mail ect. sowie mail und Mail abfangen. Das dann auch solch ein word wie Eemail mit gelesen würde ist auch richtig. Auch wenn das Wort keinen Sinn machen würde. Dennoch gibt es damit kein Problem! lediglich die zweite Prüfung auf das zweite Token funktioniert leider nicht und ich weiß nett so recht wieso?
 
Zuletzt bearbeitet:
Ach so, was mir gerade noch auffällt: was soll denn der escapte BackSlash ??? o_O
Dein "[a-zA-Z0-9-_]+@[a-zA-Z0-9-_]+\\.[a-z]{2,3}" matcht bspw. "E@a\.de" !!!

Sowas hingegen klappt "[a-zA-Z0-9-_]+@[a-zA-Z0-9-_]+.[a-z]{2,3}" matcht "E@a.de" :D
 
Hast Du das gerade getestet?
Bei mir geht das noch nicht, es bleibt alle beim Alten.

Da ich gelesen habe, dass ein Punkt eine andere Funktionalität besitzt, muss dieser escapet werden mit einem doppelten Back-Shlash "\\.", damit aus dem Punkt ein Zeichen wird.
 
Sicher habe ich das! Probiere es doch auf der o. g. Seite selbst aus :rolleyes:
Aber Du hast insoweit Recht, dass der Punkt für ein beliebiges einzelnes Zeichen steht und es hier von daher nur zufällig passt ;)

Aber Du musst natürlich auch richtig escapen!
"\." escaped den Punkt,
"\\." eascaped den zweiten Backslash und berührt den Punkt überhaupt nicht!!

Gruß Klaus
 
Ja auf der Seite klappt das alles wunderbar... nur in meinem Java-Code nicht.

Wenn ich \. eingebe, wird mir der Code rote gemarkert mit dem Hinweis "illegal escape character"
Wenn ich \\. darus mache, passt das wieder, weil ich vermute, dass nur ein BackShlash wieder eine ganz andere Bedeutung für den Quell-Code-Interpreter hat.

Schau einaml hier:

Quantifizierer und Wiederholungen *
Neben den Quantifizierern ? (einmal oder keinmal), * (keinmal oder beliebig oft) und + (einmal oder beliebig oft) gibt es drei weitere Quantifizierer, die es erlauben, die Anzahl eines Vorkommens genauer zu beschreiben:

  • X{n}. X muss genau n-mal vorkommen.
  • X{n,}. X kommt mindestens n-mal vor.
  • X{n,m}. X kommt mindestens n-, aber maximal m-mal vor.
Beispiel Eine E-Mail-Adresse endet mit einem Domain-Namen, der 2 oder 3 Zeichen lang ist:

StaticPattern p =Pattern.compile("[\\w|-]+@\\w[\\w|-]*\\.[a-z]{2,3}");

Ränder und Grenzen testen *
Die bisherigen Ausdrücke waren nicht ortsgebunden, sondern haben geprüft, ob es irgendwo im String eine Übereinstimmung gibt. Dateiendungen zum Beispiel sind aber – wie der Name schon sagt – am Ende zu prüfen, genauso wie ein URL-Protokoll wie »http://« am Anfang stehen muss. Um diese Anforderungen mit berücksichtigen zu können, können bestimme Positionen mit in einem regulären Ausdruck gefordert werden. Die Pattern-API erlaubt folgende Matcher:
 
Langsam zweifle ich, ob es nicht daran liegen könnte, das es an dem doc-File liegt.

Dazu habe ich schnell mal eine neue Klasse geschrieben, die eine stink normale txt-Datei einliest.
Hab den Inhalt der doc-Datei in die Txt-Datei kopiert.

und siehe da. es funktioniert! Nur wieso.. Vielleicht an der Zeichensetzung?

Dann habe ich gemerkt, dass wenn eine Email-Adresse in einer Word-Datei hinterlegt wir, der Autokorektor von Word ein Hyperlink setzt. und dann steht nichts mehr in dem Token, wo die Email stehen sollte.
Erst nach dem entfernen des Hyperlinks besitzt mein Token die Email-Adresse wieder.
Komischer Effekt!
 
Zurück