Regex in Java

Status
Nicht offen für weitere Antworten.

Tweedledee

Mitglied
Hallo,

bin mir nicht sicher ob dieses Unterforum das richtige ist, und ob das Problem eher Java oder Reguläre Ausdrücke betrifft. In letzterem bin ich Neuling, in Java etwas erfahrener.

Ich lese den Quelltext einer Webseite aus und suche mit folgendem Regex im nachfolgenden Code den Text zwischen den <address>-Tags ("Ethiopia"):

Code:
(?:<address>[^,]*?(?:,?[^,]*?)?,([^<]*?)</address>)|(?:<address>([^<]*)<)

Code:
[list=1][*]<h4>Emb Federal Repoblic German</h4><address>Ethiopia</address>[b]011 123 5139[/b][/list]

(www.ethiopiabook.com/whitepages/?start=1&q=0111235139)

In diesem Fall geht es nur um den Teil nach dem | , den ersten Teil brauch ich für komplexere Ergebnisse bzw. andere Webseiten.

Mit dem Tool von www.nettz.de/Service/regexp/index.cgi klappt das alles auch sehr gut, nur in meinem Java-Programm erhalte ich Fehler. Die Auswertung erfolgt über
Code:
public static String findMatches( String regexp, CharSequence s ) {
    	String tmp = "";
        Pattern pattern = Pattern.compile(regexp);
        Matcher matcher = pattern.matcher(s);  
        matcher.find();
        try{
        	tmp = matcher.group(1);
        }catch (IllegalStateException e) {
        	System.out.println("Exception in findMatches: " + regexp);
        }
        return tmp;
    }
Die Fehlermeldung ist:
Code:
Exception in findMatches: <address>([^,]*?(?:,?[^,]*?)?),[^<]*?</address>

betrifft also offenbar nur den ersten Teil des Oder-Ausdrucks (der bei anderen Seiten/Ergebnissen gut funktioniert).

Kann mir da jemand helfen?

(Falls es jemanden näher interessiert: ich bin dabei mein unter www.ip-phone-forum.de/showthread.php?t=129270 veröffentlichtes, in VB programmiertes Tool nochmal neu in Java zu programmieren. Im konkreten Fall geht es um die Inverssuche in 17 afrikanischen Telefonbüchern.)

Gruß Tweedledee
 

Wildcard

Top Contributor
Bin jetzt zu faul das selbst zu kompilieren, ersetze
Code:
System.out.println("Exception in findMatches: " + regexp);
durch
Code:
e.printStackTrace()
um eine sinnvolle Fehlermeldung zu erhalten.
 

Tweedledee

Mitglied
Ok, das schränkt es vielleicht ein wenig ein.

java.lang.IllegalStateException: No match found
at java.util.regex.Matcher.group(Unknown Source)
...

Hilft mir aber auch nicht viel weiter, d.h. "Unknown Source" ist mir unklar. Ich habe vier Anfragen, von denen die erste (Name) ein Ergebnis bringt, die nächsten beiden (Street, Zip) korrekterweise keins, aber auch keine Exception. Nur bei der (oben dargestellten) letzten Anfrage eben. Wäre es auch einfach kein Ergebnis könnte ich den Fehler einfach auf mein Regex reduzieren. Wäre das Regex fehlerhaft würde es ja auch bei nettz.de nicht funktionieren. Oder interpretiert Java die Ausdrücke anders?
 

Wildcard

Top Contributor
Sehe ich ja jetzt erst... du hast gar keine if Abfrage.
Wenn dein Regex nichts findet (was bei dir zumindest einmal passiert) kannst du nicht auf eine Matcher Group zugreifen.
Da muss ein if(matcher.find()) davor.
 

Tweedledee

Mitglied
Mit if(matcher.find()) bekomme ich nur massenhaft mehr Exceptions bei anderen Abfragen (Optionen auslesen z.B.) die vorher problemlos funktionierten. Scheint mir auch nicht notwendig zu sein, denn bei 20 anderen Telefonbuch-Webseiten funktionierten die Anfragen bisher bestens, auch wenn teilweise die Regexe nichts gefunden haben. Nicht überall sind Zip-Code oder Street auslesbar. Hängt nur hier.

Ich habe mal testweise im o.g. Regex-Code den vorderen Teil (der offenbar zur Exception führt) mit dem hinteren (der in diesem Fall das 'Ethiopia' finden soll) getauscht, und das funktioniert auch. Für

name, street, zip, city erhalte ich
Emb Federal Repoblic German, , , Ethiopia

wie ich es haben möchte. Leider nicht wirklich eine Lösung, da für andere Suchanfragen der vordere Teil auch vorne stehen muss.

Hat Java da ein Problem (bzw. eine andere Interpretation) für das Zeichen '|' für 'ODER'?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Java SAT (Haltbarkeitsproblem) mit Regex Allgemeine Java-Themen 6
J Compilerfehler bis in java.util.regex.Pattern... Allgemeine Java-Themen 2
P Java String Regex Allgemeine Java-Themen 2
R Java-RegEx terminiert nicht Allgemeine Java-Themen 3
P RegEx mit HTML Parser für Java möglich? Allgemeine Java-Themen 10
N Java regex Allgemeine Java-Themen 5
X Java String Regex - Sonderzeichen Filtern Allgemeine Java-Themen 5
R Java Regex Frage Allgemeine Java-Themen 17
Daniel_L RegEx von php zu Java - wie escapen? Allgemeine Java-Themen 6
S Java mit REGEX Allgemeine Java-Themen 4
B java regex Allgemeine Java-Themen 3
S Problem mit backreference mit java und regex Allgemeine Java-Themen 7
A java.util.Regex :-( Allgemeine Java-Themen 5
L Frage zu java.util.regex und Einlesen einer Datei Allgemeine Java-Themen 2
G Java regex eckige Klammern escapen Allgemeine Java-Themen 2
A Split() - Methode und java.util.regex.* Allgemeine Java-Themen 2
H Frage regex greater than less than Allgemeine Java-Themen 7
N Regex schlägt nicht an Allgemeine Java-Themen 10
W Variable Initialisierung mit dem Ergebnis einer Regex Allgemeine Java-Themen 1
T regex case insensitive trimmed Allgemeine Java-Themen 6
S Zeichen | in regex Allgemeine Java-Themen 8
X Regex mit mehreren Bedingungen machen Allgemeine Java-Themen 5
N Hilfe bei RegEx benötigt Allgemeine Java-Themen 3
C Java17 und Regex Allgemeine Java-Themen 13
OnDemand RegEx /compilebekomme nicht die erwarteten Werte Allgemeine Java-Themen 9
N Gierigen Regex in nicht-gierigen umwandeln Allgemeine Java-Themen 4
N E-Mail Validator (ohne Regex!) Allgemeine Java-Themen 7
OnDemand Regex von bis Allgemeine Java-Themen 6
W Versionsnummer auslesen - Regex ist zickig Allgemeine Java-Themen 2
L RegEx für Teile einer Berechnung Allgemeine Java-Themen 14
G Regex Allgemeine Java-Themen 2
L regex ganzer string? Allgemeine Java-Themen 2
MiMa Geldbetrag mit regex ermitteln. Allgemeine Java-Themen 14
W RegEx Stringliteral finden - Jflex Allgemeine Java-Themen 5
D Regex Probleme Allgemeine Java-Themen 2
Kirby.exe Regex charakter ignorieren Allgemeine Java-Themen 12
S [Regex] Nur diese Zeichen beachten Allgemeine Java-Themen 1
M Bitte Hilfe mit REGEX (Negieren) Allgemeine Java-Themen 4
C PDFBox: Nach RegEx ganze Zeile Allgemeine Java-Themen 4
S Regex mit UND-Verknüpfung Allgemeine Java-Themen 1
P RegEx für Zeiten Allgemeine Java-Themen 7
D Regex: Komplettes Wort bekommen Allgemeine Java-Themen 3
Neumi5694 Operatoren regEx für das Erstellen eines Strings verwenden Allgemeine Java-Themen 3
P RegEx Allgemeine Java-Themen 3
W String Parsen und auf eigenes Muster anwenden (kein Regex) Allgemeine Java-Themen 11
Y regex | n-faches Vorkommen oder gar keins Allgemeine Java-Themen 6
turmaline Regex gegen Regex prüfen Allgemeine Java-Themen 4
HarleyDavidson Regex - Optimierung Allgemeine Java-Themen 4
M Regex für Zahleneingabe in JavaFX Textfield Allgemeine Java-Themen 18
T Best Practice Wortregeln RegEx Allgemeine Java-Themen 11
A ALTER TABLE mit Hilfe von RegEx zerlegen, splitten Allgemeine Java-Themen 5
H Interpreter-Fehler Regex kompiliert nicht Allgemeine Java-Themen 5
M RegEx alle Matches ausgeben Allgemeine Java-Themen 5
Iron Monkey Mit Regex nach Beträge suchen Allgemeine Java-Themen 4
T REGEX Erklaerung Allgemeine Java-Themen 14
T Nur innerhalb des regex-Match ersetzen Allgemeine Java-Themen 9
H Pic Download / Regex Problem Allgemeine Java-Themen 7
F Frage zu Regex möglich Allgemeine Java-Themen 4
M Regex... mal wieder Allgemeine Java-Themen 3
H RegEx - Ersetze alles bis Leerzeichen Allgemeine Java-Themen 5
S regex verbrät CPU Allgemeine Java-Themen 6
V Regex Bereichs Filter Allgemeine Java-Themen 4
127.0.0.1 RegEx _ und 0-9 Allgemeine Java-Themen 45
S Entfernen von allen Nicht-Buchstaben chars aus einem String ohne Regex..? Allgemeine Java-Themen 10
AyKay Regex XPath Allgemeine Java-Themen 4
C Regex (Case insensitive und Umlaute) Allgemeine Java-Themen 4
D Regex Raute erkennen Allgemeine Java-Themen 2
nrg Zweistelligen Zahlenbereich mit RegEx Allgemeine Java-Themen 8
GilbertGrape Regex-Problem Allgemeine Java-Themen 2
W Denkblockade RegEx Allgemeine Java-Themen 2
S eigene regEx schreiben Allgemeine Java-Themen 4
C Regex expandieren Allgemeine Java-Themen 6
C Regex Überschniedung von Ausdrücken Allgemeine Java-Themen 16
reibi RegEX - Teilstring Allgemeine Java-Themen 6
M Regex: Ich stehe auf dem Schlauch Allgemeine Java-Themen 2
V Kleines Regex-Problem Allgemeine Java-Themen 3
B Regex "Problem" Allgemeine Java-Themen 4
B RegEx: (Um-)formulieren eines Pattern zur Identifizierung komplexer URLs Allgemeine Java-Themen 7
J Regex: Fertige URLS aus Javascript Allgemeine Java-Themen 3
K Regex JSON Allgemeine Java-Themen 3
J RegEx Ausdruck Allgemeine Java-Themen 2
J Regex: URLS aus CSS Allgemeine Java-Themen 2
G RegEx- Ausdruck Allgemeine Java-Themen 4
G RegEx kein Unterstrich Allgemeine Java-Themen 2
A Text via RegEx durchsuchen und teile ersetzten Allgemeine Java-Themen 5
C Regex: Zahl ohne führende Null Allgemeine Java-Themen 13
W RegEx Zeile parsen Medium Allgemeine Java-Themen 8
S Dateiname mit Regex parsen Allgemeine Java-Themen 3
Loyd Noch ne Regex-Frage: Verschachtelte Ausdrücke Allgemeine Java-Themen 4
Daniel_L RegEx-Frage: Ersetzen in UBB ausschließen Allgemeine Java-Themen 2
M Große Datei mit Regex durchsuchen Allgemeine Java-Themen 4
S regex für einen Link Allgemeine Java-Themen 3
E Regex alles nach ? löschen Allgemeine Java-Themen 4
M RegEx-Frage Allgemeine Java-Themen 2
R Regex Tokenizer Allgemeine Java-Themen 11
E Regex HTML Tag und Inhalt löschen Allgemeine Java-Themen 4
H RegEX und eMail Allgemeine Java-Themen 4
L-ectron-X Regex zum Entfernen von mehrzeiligen Kommentaren Allgemeine Java-Themen 2
martin82 Regex - JTable - Filter Allgemeine Java-Themen 10
nrg Kleine Hilfe mit RegEx Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben