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]