Ich habe jetzt eine halbe Stunde mit regulären Ausdrücken (RE) rumgespielt, um zu erreichen, dass ein Ausdruck sowohl <td><a href="mailto:email@email.de">email@email.de</a></td> als auch <td></td> matcht. Und ich versteh einfach nicht, warum das mein ursprünglicher Ausdruck nicht tut. Vielleicht kann mir ja jemand erklären, was da vor sich geht.
Ich hätte gemeint, dass <td>(?.*?:mailto:(.*?)".*?)?</td> beide Textstellen matcht. Da mich nur die email-Adresse interessiert, packe ich alles drumrum mit (?: )in eine ‘unnamed group’. Das ? sollte bewirken, dass die unnamed group 0 oder 1 mal gematcht wird. Dieser Ausdruck matcht aber nicht <td></td>.
Mit <td>*?:(?.mailto:(.*?)")?.*?</td> erhalte ich nicht mehr die email-Adresse.
Die Lösung ist <td>.*?(?:mailto:(.*?)".*?)?</td>. Dieser RE matcht sowohl den leeren Eintrag, als auch den Eintrag mit einer email-Adresse.
Kann mir das jemand erklären? Für mich sind reguläre Ausdrücke wie Voodoo. Ich hab’ nur grad kein Hühnchen bei der Hand…





Post a Comment