Java Regex richtig parsen

vegane-milch

Mitglied
Hallo liebe Gemeinde,

ich sitze momentan an einem kleine Projekt bei dem ich aus einen Text viele Informationen herausziehen muss. Der Text ist eine langes HTML Dokument. Klar kann man hier eine Bibliothek für nutzen. Jedoch ist es für mein Projekt etwas zu viel.

Nun habe ich selbst einen eigenen Parser erstellt. Dieser sucht nach einem Regex (Ausdruck)

Java:
//Wobei gilt:
//Objekt = Regex Ausdruck 
//Text = der zu durchsuchende Text.
//Element = das gefundene Element

Pattern pattern = Pattern.compile(objekt);
Matcher matcher = pattern.matcher(text);

if(!matcher.find()) return "Kein Ergebnis";
int anfang = matcher.start();
int ende = matcher.end();
String element = text.substring(anfang, ende);

Bei der Eingabe für Objekt = "<li class=\"active\">.*</li>"
Bekomme ich genau das Element: "<li class="active">Name einer Person</li>"

Nur was ich wirklich haben will ist das Element was zwischen den beiden Ausdrücken liegt. Wie komme ich am besten an dieses Element? Versucht habe ich es an der Stellen ".*" zu splitten. Doch dann wusste ich nicht wie ich damit am besten weiter arbeite. Außerdem kann es auch sein das ich einen anderen Regex (Ausdruck) verwende. Als Beispiel: "<li class=\"active\">[abc]*</li>". Die Methode die aus dem Text den Namen sucht sollte für jeden Regulären Ausdruck funktionieren.

Ich hoffe mir kann hier einer weiterhelfen.

Mit freundlichen Grüßen
vegane-milch
 
Hi,
Vielleicht hilft dir das hier weiter:
Java:
public static void main(String[] args) {    
    String [] sArray = new String [] {"<li class=\"active\">", "</li>"};    
    String html1 = "<li class=\"active\">Name einer Person</li>";
    getString(sArray, html1);
}

public static void getString(String [] sArray, String html) {
    String patternString = sArray[0] + "(.*?)" + sArray[1];
    Pattern p = Pattern.compile(patternString);
    Matcher m = p.matcher(html);
    while(m.find()) {
       System.out.println(m.group(0));
       System.out.println(m.group(1));
    }
}
 
Wow klappt super Danke!
Nur was ich nicht ganz verstehe ist der Ausdruck: "(.*?)" was macht dieser?

EDIT:
Ah okay eben in der Doku doch gefunden. Danke 🙂
 
Zuletzt bearbeitet:

Zurück
Oben