Codeschnipsel für Reguläre Ausdrücke

Aus crazylinux.de
Zur Navigation springen Zur Suche springen

von http://www.inspire-world.de/perlcgi/schnipsel/codeschnipselregexe.html,
weitere gibt es bei http://www.regexlib.com

Regexe für Zahlen und Datumsformate

Oftmals kommt es vor das Datumseingaben geprüft werden müssen oder nach solchen Datumsangaben gesucht wird um etwas damit zu tun. Hier nun einige Beispiele dazu.

Auf ein Datumsformat (22.12.2002) hin prüfen/suchen

Beispielstring: $text ="Text mit Datum 22.12.2002 darin.";

# Sucht nach einem Datum im Format 22.12.2002
if ($text =~ m/\d\d.\d\d.\d\d\d\d/) {
print "Text mit Datum gefunden";
} else {
print "Text mit Datum nicht gefunden";
}

Andere Schreibweise:

# Sucht nach einem Datum im Format 22.12.2002
if ($text =~ m/\d{2}.\d{2}.\d{4}/) {
print "Text mit Datum gefunden";
} else {
print "Text mit Datum nicht gefunden";
}

Gefundenen Datum anzeigen:

# Sucht nach einem Datum im Format 22.12.2002
if ($text =~ s/(\d{2}.\d{2}.\d{4})/$1/) {
print "Text mit Datum $1 gefunden";
} else {
print "Text mit Datum  nicht gefunden";
}


Unerwünschte Zeichen filtern/ersetzen

Ein falsches Zeichen, z.B. ein Datensatztrennzeichen - irrtümlicherweise in eine Text Datenbank geschrieben - kann einigen Ärger bereiten. Auch HTML oder Scriptcode kann einigen Schaden anrichten. Die passenden Gegenmittel will ich hier Beispielhaft auflisten.

Datenbanktrennzeichen filtern am Beispiel der Pipe |

$text =~ s/\|//g; komplett entfernen
$text =~ s/\|/¦/g; anderes/ähnliches Zeichen verwenden ¦

$text =~ s/\|/|/g; Zeichen in Zeichenwert umwandeln |


HTML und Scriptcode filtern

$text =~ s/<[^>]*?>//g; HTML filtern

$text =~ s/<!--(.|\n)*-->//g; SSI und Script Tags filtern
$text =~ s/"/&quot;/g; Anführungszeichen " zu &quot;
$text =~ s/\r//g; Returns (Wagenrücklauf) entfernen
$text =~ s/\n/<br>/g; Zeilenumbruch zu <br> umwandeln

Codeschnipsel für Foren und Gästebuch Codes

Jeder kennt sie, klickbare Smileys oder anderen Spezialcode in Foren und Gästebüchern der dann vom Script in HTML umgesetzt wird. Einige der wichtigsten Anwendungsbeispiele sind hier aufgeführt.

Smileys zu IMG Tags umwandeln

$text =~ s/\:\)/<img src=\"$smilieurl\/smile.gif\" border=\"0\">/g;
$text =~ s/\:D/<img src=\"$smilieurl\/biggrin.gif\" border=\"0\">/g;
$text =~ s/\:cool:/<img src=\"$smilieurl\/cool.gif\" border=\"0\">/g;

Dies wandelt die Textcodes :), :D und :cool: in einen entsprechenden IMG Tag um. Dazu ist zu beachten das die Metazeichen maskiert werden müssen.

IMG Tags zu Smileycode umwandeln

Will man Text mit solchem Code editierten ist es nötig das dieser nun wieder in den normalen Smileycode zurückverwandelt wird.

$text =~ s/<img src=\"$smilieurl\/smile.gif\" border=\"0\">/:\)/gi;
$text =~ s/<img src=\"$smilieurl\/biggrin.gif\" border=\"0\">/:D/gi;
$text =~ s/<img src=\"$smilieurl\/cool.gif\" border=\"0\">/:cool:/gi;

Formatierungsanweisungen zu HTML umwandeln

Um bei eingaben in Formulare HTML zu filtern aber dennoch spezielle Formatierungen wie Textfarben, Listen, Links und dergl. zu ermöglichen werden ähnlich wie bei den Smileys spezielle Formatierungsanweisungen benutzt.

Text kursiv, fett und unterstichen:

$text =~ s/(\[i\])(.+?)(\[\/i\])/<i>$2<\/i>/isg;
$text =~ s/(\[b\])(.+?)(\[\/b\])/<b>$2<\/b>/isg;
$text =~ s/(\[u\])(.+?)(\[\/u\])/<u>$2<\/u>/isg;

Ausgehend von diesen Beispielen lassen sich leicht weitere Regexe herstellen zur Textformatierung.

HTML zu Formatierungsanweisungen umwandeln

Auch dieser Code muss beim editieren wieder zurückverwandelt werden.

Text kursiv, fett und unterstichen zurück zu Formatierungsanweisung:

$text =~ s/(<i>)(.+?)(<\/i>)/\[i\]$2\[\/i\]/isg;
$text =~ s/(<b>)(.+?)(<\/b>)/\[b\]$2\[\/b\]/isg;
$text =~ s/(<u>)(.+?)(<\/u>)/\[u\]$2\[\/u\]/isg;

keywords: perl, regex, regular, expressions,replace,ersetzen,suchen