Thema RegEx Mittwoch, 2.12.2009, 13:05:22 Uhr
Die Transliteration - Nur ein Zeichen in einem Skalar ersetzen Ich glaube, ich hatte dazu schon mal irgendwo in diesem Blog geschrieben, aber da ich das heute gerade mal brauchte und mich da etwas intensiver mit beschäftigt habe, möchte ich noch einen Artikel dazu schreiben.
Es ging um das Problem, nur ein Zeichen in einem Skalar zu löschen bzw. durch ein anderes zu ersetzen, und das natürlich möglichst schnell.
Also die "Wald und Wiesen-Variante" ist ja ein: Weiterlesen...
Samstag, 15.12.2007, 15:52:52 Uhr
Eine nette kleine RegEx
Ich bin gerade die Tage über eine kleine, nette RegEx gestolpert, die zwar nichts weltbewegendes ist, die ich aber trotzdem erwähnenswert finde. Und zwar ging es wieder mal darum, aus einer Website einen Link zu extrahieren.
Die folgende kleine Regex holt dann zum Beispiel den href-Teil aus dem <a...>-Tag:
my $link=qq~<a href="test.htm" target="_blank">Ein Link</a>~; if ($link=~ / href\=([\"\']*)(.*?)\1[\s\/>]/is) { $ergebnis =$2; } else { $ergebnis='Kein Link da'; } print $ergebnis;
|
Weiterlesen...
Samstag, 13.10.2007, 10:34:16 Uhr
Automatische Stichwortverlinkung Nicht daß man denkt, ich würde jetzt den ganzen Tag an meinem HTPC hängen, nein, ich hab gerade heute ein neues Feature in mein Blog-Script eingebaut:
Ich kam auf die Idee, daß es doch schön wäre, wenn bestimmte Wörter automatisch mit bestimmten Seiten verlinkt werden, so zum Beispiel das Wort print mit der entsprechenden Seite, die den print-Befehl beschreibt.
Eigentlich recht einfach, denkt man (jedenfalls ich), hatte aber natürlich wieder so seine Tücken. Weiterlesen...
Mittwoch, 11.4.2007, 13:30:47 Uhr
Skalar durchsuchen und gefundene Ergebnisse in Array schreiben Mal wieder etwas aus der Praxis: Ich stand (stehe) vor dem Problem, daß ich ein Skalar, oder genauer gesagt dem HTML-Quelltext einer Webseite nach Links durchsuchen mußte. Ich suchte also eine Möglichkeit, möglichst schnell alle Links nach dem Schema <a href="test.htm" .....>Linktext</a> zu finden und wenns denn geht gleich in ein Array zu schubsen.
Weiterlesen...
Freitag, 2.3.2007, 00:23:28 Uhr
Vorrausschauende und zurückblickende Suche mit regulären Ausdrücken Vorausschauende und zurückblickende Suche mit Perl - hört sich ja mächtig kompliziert an! Daß diese Suchart aber durchaus sinnvoll und auch praktisch ist, sieht man im ersten Beispiel:
my $t = "Bandwurm Regenwurm Regenschirm Regenschauer"; if($t =~ /Regen(?=scha)\w+/) { print "gefunden ($&)"; } else { print "nicht gefunden"; } # Test 1
|
Ausgabe: gefunden: Regenschauer
Weiterlesen...
Donnerstag, 1.3.2007, 00:20:15 Uhr
Kommentare in regulären Ausdrücken Mal unter uns: Wer kennt nicht das Problem, daß man irgendwann mal einen ganz tollen RegEx ausgetüftelt hat und nach einem Jahr nicht mehr weiß, wie das Ganze funktioniert... Darum hat Perl die Möglichkeit vorgesehen, Kommentare in regulären Ausdrücken einzufügen!
Kommentare fügt man in Klammern wie diesen "(?#...)" in eine RegEx ein.
my $t = "Test"; if($t =~ /Test(?# suche das Wort Test)/) {...}
|
Weiterlesen...
Mittwoch, 28.2.2007, 09:52:54 Uhr
Was man mit RegEx tun sollte und was nicht Reguläre Ausdrücke sind eine große, mächtige Fähigkeit in Perl, alle möglichen Dinge mit Zeichenketten anzustellen. Suchen, ersetzen und löschen von Teilen eines Skalars lassen sich damit ziemlich komplex und sehr variabel umsetzen. Diese Komplexität und Flexibilität hat aber einen Nachteil: Für manche Aufgabenstellungen sind RegEx eigentlich zu langsam, bzw. es gibt wesentlich schnellere Varianten ohne RegEx.
Suchen nach festen Inhalten eines Skalars
$t="test"; if ($t=~ /te/){ ... }
|
Weiterlesen...
Montag, 26.2.2007, 07:37:51 Uhr
Alternativen in regulären Ausdrücken - Oder-Suche mit RegEx Manchmal möchte man in regulären Ausdrücken eine Oder-Suche durchführen. Dies wird ermöglicht durch den |-Operator im Suchteil des regulären Ausdruckes.
Beispiel:
my $t="test"; if ($t=~ /haus|test|maus/){print "gefunden $&";} else {print "nicht gefunden";}
|
Weiterlesen...
Sonntag, 18.2.2007, 15:10:21 Uhr
Groß-Kleinschreibung in Regular Expression ändern Folgendes Beispiel ist für mich mehr eine "Spielerei", aber immerhin interessant genug, sie zu beschreiben.
Also, die Aufgabenstellung wäre angenommener Weise:
Wandle Weiterlesen...
Freitag, 16.2.2007, 12:35:15 Uhr
Gruppenbildung - Zeichenkolonnen mehrfach suchen mit Perl Wie Sie hier gesehen haben, wirkte eine entsprechende Anweisung zur Mehrfachsuche immer nur auf das zu letzt stehende Zeichen, etwa $t=~ /a{2,3}/; sucht zwei oder dreimal das a. Was aber nun, wenn längere Zeichenketten wiederholt gesucht werden sollen?
Dafür gibt die Klammer ( und ); Weiterlesen...
|