phpbar.de logo

Mailinglisten-Archive

[php] Regular Expressions

[php] Regular Expressions

Andreas Braukmann braukmann_(at)_tse-online.de
Tue, 14 Mar 2000 00:55:10 +0100


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