Stefan Kleeschulte: Variable in Regulärem Ausdruck

Beitrag lesen

Hallo Stefan,

Wie kann ich nun im Regulären Ausdruck auf diese Variablen zurückgreifen?

Zur verdeutlichung was ich bräuchte, was aber nicht klappt:
/^\b[\w-.]{$nickname_minlength,$nickname_maxlength}\b$/

Hmmm, folgendes geht:
%>perl -we "$min = 1; $max = 3; $_ = 'abbcccddddeeeee'; print $1 while /((\w)\2{$min,$max})/g;"
und ergibt:
%> bbcccddddeeee

Vermutlich liegt der Fehler eher im \b das vielleicht nicht dort trifft, wo Du es erwartest, wenn Du eine Klasse angibst, in der auch nichtalphanumerische Zeichen vorkommen. \b trifft nämlich nur zwischen \w und \W aber nicht zwischen . und \W und auch nicht zwischen - und \W. Also kann Dein Ausdruck nicht treffen, falls der String mit \W beginnt oder aufhört. Da Du am Anfang und Ende verankerst, kannst Du Dir \b vielleicht sogar ganz sparen. Poste doch mal den Text, auf den Du den regulären Ausdruck loslässt ohne zu treffen, und den String den Du erwartest zu finden.

Wenn ich die beiden Variablen durch Zahlen ersetze klappt es. (Z. B. mit "abcabc", "abc_abc" oder "abc.-ABC").

Ich fürchte eher es liegt an PHP, mit Perl klappts. (Hab's gerade ausporbiert...)

Hast du noch 'ne Idee?
CU :-)
Stefan