Laden...

Probleme mit regulärem Ausdruck unter Java

Erstellt von Fabian vor 18 Jahren Letzter Beitrag vor 18 Jahren 1.362 Views
Fabian Themenstarter:in
1.985 Beiträge seit 2004
vor 18 Jahren
Probleme mit regulärem Ausdruck unter Java

Hallo Forum,

ich glaube, so langsam bräuchte ich ein eigenes Unterforum für meine Probleme mit regulären Ausdrücken 😉.

Ich habe mir folgenden RegEx geschrieben:

( <p>.+</p>)?

Dieser soll auf Kombinationen wie "<p>Text</p> <p>Noch mehr Text</p>" matchen und mir die Ergebnisse als Gruppen zurückliefern. Das macht er aber leider nicht. Ich bekomme den Match immer als einen kompletten String.

Habe ich dagegen folgenden RegEx,

( <p>[\w]+</p>)?

dann klappt auch das mit den Gruppen. Ich verstehe allerdings nicht, wie das sein kann, also warum das Gruppieren einmal klappt und einmal nicht.

Ich würde schon gerne den Punkt nehmen, da zwischen den "<p>" und "</p>" beliebige Zeichen stehen können und ich die ungerne alle angeben möchte (da vergesse ich bestimmt irgendwas).

Hat jemand eine Idee, woran das liegen kann?

Danke und Gruß,
Fabian

"Eine wirklich gute Idee erkennt man daran, dass ihre Verwirklichung von vornherein ausgeschlossen erscheint." (Albert Einstein)

Gefangen im magischen Viereck zwischen studieren, schreiben, lehren und Ideen umsetzen…

Blog: www.fabiandeitelhoff.de

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo Fabian,

das liegt vermutlich daran, dass ( <p>.+</p>)? so matcht, dass das allererste <p> und das allerletzte </p> gematcht werden. Regex sind gierig. .+ match auf so viel wie möglich. Bei \w sind keine spitzen Klammern enthalten, weshalb spätestens bei '<' Schuss ist und so die <p> und </p> passend gematcht werden.

Vielleicht kann Java ja auch den kürzesten Match: .+?

herbivore

Fabian Themenstarter:in
1.985 Beiträge seit 2004
vor 18 Jahren

Hallo herbivore,

Original von herbivore
Vielleicht kann Java ja auch den kürzesten Match: .+?

Genau das wars! Ich muss Dir mal wieder danken. Jetzt werden auch schön alle Sonderzeichen erkannt.

Gruß,
Fabian

"Eine wirklich gute Idee erkennt man daran, dass ihre Verwirklichung von vornherein ausgeschlossen erscheint." (Albert Einstein)

Gefangen im magischen Viereck zwischen studieren, schreiben, lehren und Ideen umsetzen…

Blog: www.fabiandeitelhoff.de