Mailinglisten-Archive |
Hi, On Mon, Mar 13, 2000 at 11:04:48PM +0100, Robert Breker wrote: > das alte Thema, Regular Expressions, ich möchte aus einem längeren texte > alle Inghalte in den <% %> Tags herausbekommen, <%(.*)%> funktioniert leider > nicht wenn mehrere, dieser Tags in einem string sind ;( > hat jemand ne Idee? ... ja, Du musst bei der Konstruktion beachten, dass die Ausdruecke zunaechsteinmal 'greedy' / 'gierig' gematched werden. D.h., dass immer das laengst-moegliche 'passende' Muster 'gematched' wird. (Exkurs: Meine Guete, ... kann mal jemand ein deutsches Standard-Vokabular fuer das Umfeld 'RegEx' festlegen ...) Bei Verwendung der Perl-Expressions (preg_*) kannst Du dieses 'gierige Verhalten' durch Nachschaltung eines Fragezeichens ausschalten. Nehmen wir also z.B. die Beispiel-Zeichenkette: "asdfasdf <% 12345 12345%> asdf asdaf <% 1234 1234 %> asdf" ^^^^^^^^^^^^^^^^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Dann 'matched' '<%(.*?)%>' wie gewuenscht nur den mit ^^^ markierten Substring. Die 'gierige' Variante '<%(.*)%>' hingegen den mit ~ markierten laengeren Teilstring. Eine formal korrekte und vollstaendige Erklaerung findest Du auch hier: http://www.php.net/manual/pcre.pattern.syntax.php3 Und immer wieder die Empfehlung des 'Regular Expression'-Buches aus dem O'Reilly-Verlag, welches sowohl auf Englisch wie auch auf Deutsch verfuegbar ist. -Andreas -- Interference by unqualified parties is responsible for those rushed designs and last minute implementations that lead to bugs, burnout and sometimes even death. Software Developers Combat Manual
php::bar PHP Wiki - Listenarchive