zur Startseite


Anfragen für Seminare und Coaching senden Sie bitte an office@rolandgeyer.at
*Einzelseminare
*Gruppenseminare
*Vereins- und Firmenseminare
*Werbecoaching

Seminare für Betriebsysteme:

Apple MacOS X
Windows XP und älter
Windows Vista
Windows 7
Linux (SUSE, Ubuntu, Knoppix)

Seminare für Microsoft Office:

Word
Excel
Powerpoint
Outlook
Access

Seminare für Software von Adobe:

Photoshop
Illustrator
Indesign
Dreamweaver
Flash

Spezielle Seminarpakete:

Express DTP Gesamtausbildung
Express Web Gesamtausbildung
Intensiv ECDL Core Prüfungsvorbereitung
Intensiv ECDL WebStarter Prüfungsvorbereitung
ECDL Imagemaker Prüfungsvorbereitung
OCG WebPublisher Prüfungsvorbereitung:
Modul 1
Modul 2
Modul 3
Modul 4
Modul 5
Modul 6
HTML
Javascript

Wollen Sie von Microsoft- oder Adode-Produkten auf
kostenlose und lizenzfreie Software
umsteigen? opensource-akademie zeigt Ihnen wie es geht.

Ihre Meinung ist mir wichtig!

Zum Gästebuch
AGB

Reguläre Ausdrücke

Perl besitzt eine sehr mächtige Text-Such- und Ersetzen-Funktion. Eine dieser Funktionen ist das Matching, auf Deutsch die Suche innerhalb eines Strings, die andere die Substitution. Letztere ersetzt das gesuchte Muster durch die entprechenden Vorgaben. Die Muster werden zwischen zwei Zeichen definiert.

=~ definiert Bearbeitung laut Muster, != das gegenteilige Muster

Meist sind es die Schrägstriche: /Muster/,
Es funktioniert aber auch mit anderen Zeichen; z.B.: ##,(),{}...... Diese werden meist zwecks Lesbarkeit des Codes verwendet.

Achtung: Das Muster wird zwischen den Zeichen gesucht.

11.1. Einige Optionen für die Art der Mustererkennung:

Diese werden in Perl nach dem letzten Schrägstrich bekanntgegeben; z.B.: m/Muster/i

11.2. Welche Zeichen sollen gesucht werden?

Der Backslash \ wandelt Nichtliterale in Literale um; z.B. \" wenn das Zeichen "

11.3. An welcher Stelle (Anfang - Ende) soll das Zeichen gesucht werden?

11.4. Welche Zeichengruppe soll in einer Zeichenposition gesucht werden?

Alternative Ausdrücke können auch in Klammern zusammengefasst werden. /(azDe|A)/ In diesem Fall können eine oder mehrere Zeichenpositionen alternieren!!

11.5. Für jedes gesuchte Zeichen kann man außerdem noch nachfragen, an wievielen Zeichenpositionen hintereinander bzw. wie oft es denn anschließend vorkommt:

Zum Beispiel kann ein Wort durch ein _ oder mehrere _ getrennt sein. (Ein_Wort,Ein_ _Wort, Ein_ _ _ _ _ _ _ _ _ _Wort).
Dafür gibt es folgende Abfragemöglichkeiten:

Normalerweise liefert Perl als Rückgabe den linken längsten String z.B.:*
z.B.: abrakadabra a bis b: abrakadab. Folgt daran anschließend ein ? z.B. *?, ist dasErgebnis die Rückgabe des linken kürzesten String z.B.: abrakadabra a bis b: ab

11.6. Der gesuchte String kann in Perl pro Suchdurchlauf in einer Variablen abgelegt werden.

Beispiel_11.1:$1

$t = "12 34 56 78";
$t =~ m/(\d+)/g;
print "1:".$1."\n";
$t =~ m/(\d+)/g;
print "2:".$1."\n";
$t =~ m/(\d+)/g;
print "3:".$1."\n";;
$t =~ m/(\d+)/g;
print "4:".$1;

Der Bildschirm enthält dann folgende Ausgaben:

> 1: 12
> 2: 34
> 3: 56
> 4: 78

Natürlich wird dies in einer Schleife erledigt. Jener Ausdruck, der ein Ergebnis bei erfolgreicher Suche zurückliefern soll, wird durch zwei runde Klammern begrenzt. Man kann mehrere Klammern verschachtelt und nebeneinander setzen. Perl legt die Ergebnisse links beginnend einfach in die nächste Variable ab. Diese Variablen werden standardgemäß einfach durchnummeriert: $1, $2, $3..... ;
z.B.: /(Ausdruck1)Ausdruck(Ausdruck2)/, Ergebnis in $1 und $2.

 

Dieses Verhalten kann durch ?: in der Klammer unterbunden werden z.B. (?:Ausdruck1). Es wird dieses Ergebnis in ein und derselben Variable abgelegt.

Innerhalb des Musters kann durch \1 statt $1 auf das Ergebnis des Klammerausdruckes referenziert werden.
Beispiel: /(a)\1/ doppeltes Vorkommen des Zeichen a.
Beispiel: /(\b(\w+)\s+\1\b)\1/ doppeltes Vorkommen eines Wortes.
Beispiel: /(^(\w+):\s+(.*)/ mailheader $1=Parameter $2=Inhalt

Alle Suchergebnisse erhält man innerhalb einer Liste. Auf diese kann man, wie jedes andere Array auch ensprechend zugreifen:

Beispiel_11.2:

$t = "12 34 56 78";
print (($t =~ m/(\d+)/g)[2]);

Der Bildschirm enthält dann folgende Ausgabe:


> 56

Zum Testen der regulären Ausdrücke habe ich ein kleines Perlprogramm geschrieben. Es nimmt einen String per Eingabe, legt per Eingabe den regulären Ausdruck für das Matching fest und liefert das Ergebnis. Diese win-version bei vorhandenem Perl-Interpreter über DOS die Datei regular.pl starten, viel Spaß: download regTest.zip(2Kb)

 

Weitere freie Tutorials: Rhetorik & Kommunikation Typografie & Layout Bildbearbeitung mit Photoshop oder GIMP Vektorgrafik mit Illustrator, FreeHand, Corel Draw oder Inkscape Layout mit Indesign oder Scribus Druckvorstufe GoLive Html JavaScript Flash & ActionScript Director & Lingo Assembler DOS Java objektorientiert Perl Word Excel Access PowerPoint Outlook Betriebssystem