Reguläre Ausdrücke in PERL
bob
- perl
Hallo,
ich versuche gerade einen regulären Ausdruck zu basteln. Es soll eine Variable geprüft werden ob die Zeichen in der Variable vorkommen. Es wird aber leider immer nur dass erste Zeichen und nicht jedes Zeichen geprüft, was ist zu tun?
if( variable !~ /[a-zA-Z0-9_äöüÄÖÜ]/gims) ){}
mfg
bob
Halihallo bob
ich versuche gerade einen regulären Ausdruck zu basteln. Es soll eine Variable geprüft werden ob die Zeichen in der Variable vorkommen. Es wird aber leider immer nur dass erste Zeichen und nicht jedes Zeichen geprüft, was ist zu tun?
Informiere dich über die Direktiven '$' und '^' und der passenden Kardinalität (+|*)
if( variable !~ /[a-zA-Z0-9_äöüÄÖÜ]/gims) ){}
if ($variable !~ /[1]+$/gms) { ... }
Caseinsensitive kannst du gerne weglassen, wenn du explizit alle Gross-
/Kleinschreibweisen in der Zeichenklasse aufzählst.
Viele Grüsse
Philipp
a-zA-Z0-9_äöüÄÖÜ ↩︎
Hi,
Danke, und wie könnte ich nun noch Sonderzeichen mit einbeziehen? Muss ich dann jedes Sonderzeichen einzeln angeben, dass wäre ja doof ?!
Was meinst du mit Sonderzeichen? Grundsätzlich umfasst die Zeichenklasse \w auch den Unterstrich, wenn's etwas mehr oder was anderes sein soll, dann musst du meines Wissens nach die Sonderzeichen in deiner selbst definierten Klasse explizit mit angeben.
Viele Grüße
Torsten
Was meinst du mit Sonderzeichen? Grundsätzlich umfasst die Zeichenklasse \w auch den Unterstrich, wenn's etwas mehr oder was anderes sein soll, dann musst du meines Wissens nach die Sonderzeichen in deiner selbst definierten Klasse explizit mit angeben.
Ich meine so Zeichen wie: ?!-:()&$*> ... etc
bob
Hi bob,
Was meinst du mit Sonderzeichen?
Ich meine so Zeichen wie: ?!-:()&$*> ... etc
In Kombination mit meinem Vorschlag könnte dein Regulärer Ausdruck dann so aussehen:
$meinre = '[0-9a-zA-Z?!-:()&$*]*';
Den kannst du dann überall, wo du es brauchst, nach folgendem Schema verwenden:
$variable =~ /^$meinre$/;
Ansonsten geht natürlich auch der umgekehrte Weg, indem du die Sonderzeichen raussuchst, die du _nicht_ haben willst:
$meinre = '[^...]';
Wobei es wohl schwierig sein dürfte, die Pünktchen mit Leben zu füllen, und sicher gibt's auch eine bessere Lösung ;)
Viele Grüße
Torsten
Halihallo bob
if ($variable !~ /[1]+$/gms) { ... }
Danke, und wie könnte ich nun noch Sonderzeichen mit einbeziehen? Muss ich dann jedes Sonderzeichen einzeln angeben, dass wäre ja doof ?!
Entweder musst du jedes einzeln angeben, oder du erstellst eine Zeichenklasse der
"normalen Zeichen" und invertierst diese. Fragt sich nur, was weniger Aufwand ist, das
musst du entscheiden. Was meinst du denn mit Sonderzeichen?
Viele Grüsse
Philipp
a-zA-Z0-9_äöüÄÖÜ ↩︎