Webstatt.org - Community seit 2006 - 2012 (2024?)

Regex funktioniert nicht (ganz so wie ich es will...)

Avatar user-182
01.08.2006 09:21

Moin,

hab ein Regex:
#(blog|blogtb)([0-9])-(.*?)#

Der soll das hier matchen:
blog2-irgend-ein-text

als ausgabe mit preg_match() bekomme ich aber immer nur:
Array (
[0] => blog2-
[1] => blog
[2] => 2
[3] =>
)


warum?

Lg,
Franky

// argh jetzt gehts...ich musste .* statt .*? verwenden...

Seid ihr auch schon wix'r? xD
Avatar user-253
01.08.2006 14:03

Was ja auch sinnvoll ist, da .*? nach dem kleinsten möglichen Treffer abbricht. Wenn es also am Ende steht, wird nie etwas damit gematcht lächeln

Avatar user-168
01.08.2006 14:34

Müsste dazu nicht ?U genutzt werden? (Ungreedy)

Dustwolf ------------------------- Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein. F. Nietzsche
Avatar user-253
01.08.2006 14:36

Der Modifier U stellt das Verhalten für den gesamten Regex um, mit einem nachgestellten ? kann ein einzelner Operator umgestellt werden - also +? oder *?

Michael

Avatar user-271
01.08.2006 15:56

so mal ne dumme frage...kann das blog2 nich auchmal am ende stehn?

also so wie hier:
irgendein-text-blog2

und nachdem da kein - mehr ist..wird das auch nichtmehr gematched zwinkern oder ist das nicht möglich

#!/bin/bash
traurig){ neutral:& };:
Avatar user-182
01.08.2006 22:34

*Doch noch eine Frage hab*

dieser code hier:
if(preg_match('<dies ist ein test>', '/[^0-9a-z_.-äöüß!?\s]/i'zwinkern) echo 'false';
else echo 'true';


eigentlich sollte der doch false matchen (wegen den "<" und ">"...davon steht ja nix im regex)...der macht aber true...wie kommts?

Seid ihr auch schon wix'r? xD
Avatar user-253
02.08.2006 08:18

Dein Regex prüft ja nur, ob mindestens ein Buchstabe NICHT 0-9a-z_.-äöüß!?\s ist

Ich schätze dein ^ ist in die eckigen Klammern gerutscht, oder willst du nicht prüfen, dass der Sring nur aus 0-9a-z_.-äöüß!?\s besteht?

'/^[0-9a-z_.-äöüß!? ]$/i'

Michael

Avatar user-166
03.08.2006 10:13

preg_match($suchmuster, $zeichenkette, $treffer);

Man beachte die Reihenfolge der Argumente zwinkern

Edit: Ok, mit der anderen Reihenfolge gehts auch nicht. zwinkern Du musst nämlich das - nach dem Punkt escapen, denn das Minus ist ein Metazeichen in einer Charakterklasse und muss somit escaped werden.

[ » HesaSys - ein freies, schnelles und flexibles WCMS ]