phpbar.de logo

Mailinglisten-Archive

[php] RegEx: Subexpression?

[php] RegEx: Subexpression?

Oliver Trosien oli_(at)_tronet.on-luebeck.de
Wed, 15 Dec 1999 14:01:46 +0100


moin Alex,

Axel Tietje <a.tietje_(at)_flynet.de> schrieb:

> (Pageviews<br>seit dem 17.06.1999: )([^<]+)(.*)

> Das funktioniert auch. Wie aber kann ich im 2. Teil eine Phrase statt
> nur eines Zeichens angeben? Ich habe es z. B. mit
> ([^\(<br>\)]+) oder (^\(<br>\)) in allen möglichen Variationen
> probiert - die richtige war nicht dabei.

nein, das klappt nicht.
Mit [] suchst Du nach Zeichenklassen. Also wuerde 
[^\(<br>\)] auf alles passen, was keine Klammer (), <>, b oder r ist.
Wahrscheinlich nicht das was du willst.

Das Prinzip "Think negative" [^...] klappt nur bei einzelnen Zeichen.

Ansonsten musst Du es so probieren:

"(Pageviews<br>seit dem 17.06.1999: )(.*?)(<br>)"

Das kann allerdings nur, wie ich gerade herausgefunden habe, die
perl-kompatible Version. Ohne Fragezeichen im Pattern laeufst Du Gefahr,
dass ein zweites <br> in der Zeile ist und damit alles bis zum hinteren <br>
gespeichert wird. ("greedy regexp")

Eine weitere Moeglichkeit ist folgende:
Du suchst ja Pageviews, d.h. das ist auf jeden Fall eine Zahl (\d+)

"(Pageviews<br>seit dem 17.06.1999: )(\d+)(<br>)"

hm... ich sehe gerade auch \d ist eregi unbekannt :-(

also naechster Versuch:

"(Pageviews<br>seit dem 17.06.1999: )([0-9]+)(<br>)"


klappt.


Vielleicht kannst Du Deinen Provider ja ueberzeugen auf php3.0.12 
aufzuruesten. 3.0.6 ist ja "vorsintflutlich" ;-)


cu,
oliver


php::bar PHP Wiki   -   Listenarchive