regulaere Ausdruecke
2001-01-2 | 2:54 pm | Kein Kommentar »
if ($irgendwas =~/…/){…}
| + = {1,} ? = {0,1} * = {0,} |
mindestens eins hoechtens eins bel. viele, auch keins |
|---|---|
| ^ $ |
Suche am Anfang des Audrucks Suche am Ende des Audrucks |
if ($irgendwas =~/ris/) if ($irgendwas =~/ine$/) if ($irgendwas =~/^ris/) |
Auswertung des Ausdrucks ergibt: true, d.h. wird gefunden true, d.h. wird gefunden false, d.h. wird nicht gefunden |
| . /.*/ |
irgendein beliebiges Zeichen beliebig oft ein bel. Zeichen (auch null-mal) |
| /^.*$/ /^$/ /^\s*$/ |
irgendetwas, auch Leerzeile Leerzeile Leerzeile |
| \d = [0-9] \d\d = \d{2} \d{0,2} |
eine Ziffer zwei Ziffern hintereinander hoechstens zwei, aber auch keine Ziffer |
| \s \S |
whitespaces nicht-whitespaces |
| [aeiou]+ [^aeiou]+ |
Vokale Nicht-Vokale |
| [a-kw-z] [0-9] |
Bereiche |
| [„_,:] [\.\-\\] |
ohne Sonderbedeutung Escape bei Zeichen mit Sonderbedeutung |
| $irgendwas = „ if ($irgendwas =~/< .*?>/) # findet <bla> if ($irgendwas =~/< [^>]+>/) # findet ebenfalls <bla> |
|
Klammerungen in regulaeren Ausdruecken
Die Nummerierung der Dollars entspricht der Reihenfolge der vorderen Klammern.
$irgendwas = „From: blub@bla.de“;
if ($irgendwas =~/^(\S+).\s*(.*)$/) {
$headerName = $1;
$headerContent = $2;
}
| /^(bla)*blub$/ | findet blub ($1=bla) nicht blblub |
|---|---|
| (bla.)*blub | findet blaxlbub ($1=blax) findet blaublaublub ($1=blau) nicht blablub |
| bla.*blub | findet blablub findet blablablub |
| (bl(au)*g)+blub | findet blaugblub ($1=blaug, $2=au) findet blgblub nicht blagblub nicht blauaublub |
Bsp: mary had a lamb a cow and a sheep
| if (/mary/i) {…} | i: caseinsensitive – Gross/Kleinschreibung egal |
|---|---|
| while (/a(.)/g) {print „$1\n“;} | |
| g: global – Interpreter merkt sich die Stelle bei mehrfacher Ausfuehrung wird jeweils das naechste a gefunden |
|
| while (/\sa\s(\S+)/g){print „$1\n“;} | |
| findet „lamb“, „cow“, „sheep“ | |

Sag etwas dazu: