Frage zu RegExp
Horst Nogajski
- php
Hallo zusammen,
ich habe eine kurze Frage zu Regulären-Ausdrücken.
In manchen Beispielen die ich so gefunden habe wird ein Teilausdruck benutzt dessen Sinn ich nicht verstehe, z.B.:
preg_match("/<tagname[^>]*>/i", $html, $matches);
Damit würde man also Tags finden wollen die z.B. <tagName undIrgendWas="blabla" usw> beinhalten.
Aber wofür steht das [^>]
Würde man mit /<tagname.*?>/i nicht genau das gleiche finden?
Viele Grüße,
Horst
Hallo Horst,
Aber wofür steht das [^>]
das steht für jedes Zeichen außer einer schließenden spitzen Klammer.
Würde man mit /<tagname.*?>/i nicht genau das gleiche finden?
nein, da ein Punkt nicht auf Newlines passt (außer du verwendest zusätzlich noch den Medifier 's' - dann entspricht es der Variante mit dem [^>]).
Grüße aus Nürnberg
Tobias
hi,
Aber wofür steht das [^>]
das steht für jedes Zeichen außer einer schließenden spitzen Klammer.Würde man mit /<tagname.*?>/i nicht genau das gleiche finden?
nein, da ein Punkt nicht auf Newlines passt (außer du verwendest zusätzlich noch den Medifier 's' - dann entspricht es der Variante mit dem [^>]).
ein weiterer, entscheidender grund könnte hier auf die gierigkeit von regulären ausdrücken sein - <tagname.*?> dürfte u.U. über tag-grenzen hinaus auf alles bis zur letzten > des textes greifen (sofern keine entsprechenden modifier benutzt werden).
gruss,
wahsaga
Hallo wahsaga,
ein weiterer, entscheidender grund könnte hier auf die gierigkeit von regulären ausdrücken sein - <tagname.*?> dürfte u.U. über tag-grenzen hinaus auf alles bis zur letzten > des textes greifen
nein, genau das verhindert ja das Fragezeichen :-) (siehe auch http://dclp-faq.de/q/q-regexp-gierig.html)
Grüße aus Nürnberg
Tobias
Hallo Tobias, Hallo wahsaga,
ein weiterer, entscheidender grund könnte hier auf die gierigkeit von regulären ausdrücken sein - <tagname.*?> dürfte u.U. über tag-grenzen hinaus auf alles bis zur letzten > des textes greifen
nein, genau das verhindert ja das Fragezeichen :-) (siehe auch http://dclp-faq.de/q/q-regexp-gierig.html)
Genau. Ungierig ist es schon, oder nur solange man _nicht_ den Modifier U verwendet, (siehe noch ma http://dclp-faq.de/q/q-regexp-gierig.html)
Man braucht es also um auch über Newlines hinweg zu treffen, _unabhängig_ von den verwendeten Modifiern.
Vielen Dank für die Aufklärung ;-)
Horst