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
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
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