Tip: RegEx / CharClasses
Patrick Willam
p.willam at gmx.de
Di Aug 9 14:28:18 CEST 2005
Hallo zusammen!
Ab und zu brauche ich mal Regular Expressions (REs), die nicht total trivial
sind wie ".*\.jpe?g" (= Shellpattern *.jpg und *.jpeg).
Dabei kann man eigene Zeichenklassen nutzen, wie z.B. "[A-Ma-m]" (passt nur
aufs halbe Alphabet) oder "[^A-Ma-m]" (passt zur anderen Haelfte).
Es gibt fuer POSIX/Linux auch vordefinierte Klassen wie "alpha", "lower",
"space", "print" usw. (--> man 7 regex) mit folgenden Vorteilen:
o man muss es nicht jedesmal selber zusammenstoppeln
o sie sind 'sprechend', somit lesbarer und verstaendlicher
o sie beruecksichtigen Erweiterungen durch die jeweilige "locale" (Sprache
usw. --> man 7 locale), z.B. im Deutschen: Umlaute und 'Ess-Zett'
Wenn's drauf ankommt -- und das tut es bei REs meistens ;-) -- dann musz
man etwas genauer wissen, _welche_ Zeichen zu so einer vordefinierten
Klasse gehoeren.
Die relevanten "manpages" sind ziemlich krude, weil dort fast nur wechsel-
seitige Definitionen geboten werden, die sich z.T. sogar widersprechen.
Per Google konnte ich auch nur solche vereinfachten Beschreibungen finden,
die zwar verstaendlich und 'logisch', aber [mir] zu ungenau sind.
Ich habe deswegen etwas Arbeit in eine kleine und kompakte Tabelle gesteckt,
die mir fortan als Uebersicht dient; sozusagen ein Spickzettel.
In der Hoffnung, dasz das Ergebnis auch fuer Andere hilfreich ist -- die
anwesenden Gurus mal ausgenommen -- habe ich es ins LinuxWiki* gesteckt:
<werbung>
http://linuxwiki.de/PosixZeichenklassen
</werbung>
*) http://linuxfaq.de (von Jens Benecke) ist im LinuxWiki aufgegangen
weitere Links zu REs:
o Kurzerklaerung (steigt sinnigerweise nicht allzutief in die Materie)
http://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck
o Perl-REs, "die volle Packung" ;-)
http://wiki.perl-community.de/bin/view/Perldoc/perlreref
Viele Gruesze,
Patrick
--
zu Googles neuem Dienst "Search History":
"Man muss sehr gute Computerhygiene pflegen, um das zu nutzen"
-- Marissa Mayer, Google - Abt. konsumentenorientierte Webprodukte
[http://www.spiegel.de/netzwelt/technologie/0,1518,352773,00.html]