Home / LinuxUser / 2004 / 09 / Einfaches Erstellen von regulären Ausdrücken

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Eingedost
(161 Punkte bei 4 Stimmen)
Aufteiler
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.

Aufmacher Artikel

Wizard in der Shell

Einfaches Erstellen von regulären Ausdrücken

01.09.2004 Wo reguläre Ausdrücke für den Profi ein Denksport sind, steht der Anfänger verzweifelt vor einem Dickicht an Kürzeln und Zeichen. Für den Durchblick sorgt der Editor txt2regex.

Wer kennt nicht den Ärger über den regulären Ausdruck, der partout nicht auf das gewünschen Textmuster passen will? Oder die bittere Erkenntnis, dass die Regex zwar in der Programmiersprache Perl greifen würde – im aktuellen Lisp-Code, an dem Sie gerade arbeiten, jedoch nicht?

Hier hilft der Regex-Wizard Txt2regex, den wir uns näher anschauen wollen. Der Wizard verarbeitet Textmuster für die unterschiedlichsten Programme und Sprachen, von Awk über Emacs bis hin zu Perl, Procmail, Sed und Vim. Er besteht im wesentlichen aus einem Shell-Skript, dass eine Bash ab Version 2.04 voraussetzt. Obwohl diese Mindestanforderung mit jeder halbwegs aktuellen Linux-Distribution gegeben sein sollte, können Sie sie mit den Befehlen echo $BASH_VERSION oder bash --version prüfen. Wenn die Versionsnummer in Ordnung ist, steht einer Installation nichts mehr im Wege.

Sollte Ihre Distribution den Wizard nicht zur Installation bereithalten, finden Sie ihn als Tar-Archiv auf der Download-Seite des Projektes [1]. Als Debian-Anwender genügt der Befehl apt-get install txt2regex, um das Tool zu installieren.

Nach dem Download entpacken Sie zunächst das Archiv und wechseln anschließend in das neu entstandene Verzeichnis:

[andreas]~ > tar xvzf txt2regex-0.7.tgz
[andreas]~ > cd txt2regex-0.7

Da Sie das Programm nicht kompilieren müssen, genügt das Kommando make install als root:

[andreas]~ > su
Password: (Ihr root-Passwort)
root# make install

Dieses Vorgehen birgt jedoch den Nachteil, dass die Programmteile in die Verzeichnisse /usr/bin und /usr/share/locale geschrieben werden – ein Ort, in dem distributionsfremde Installationen in der Regel nichts zu suchen haben. Um die Zielverzeichnisse anzupassen, geben Sie dem Befehl make install die Variablen BINDIR und LOCALEDIR mit auf den Weg:

root# make install BINDIR=/usr/local/bin LOCALEDIR=/usr/local/share/locale
compiling de_DE.po…ok
compiling id_ID.po…ok
compiling ja.po…ok
compiling pl_PL.po…ok
compiling pt_BR.po…ok
program 'txt2regex' installed. just run /usr/local/bin/txt2regex

Nun befinden sich die Programmteile in den Pfaden /usr/local/bin und /usr/local/share/locale. Alternativ zu dieser Vorgehensweise können Sie die entsprechenden Variablen im Makefile txt2regex-0.7/Makefile anpassen. Die Variable MANDIR findet im Makefile der Version 0.7 keine weitere Beachtung. Kopieren Sie die Datei txt2regex-0.7/txt2regex.man zum Beispiel in das Verzeichnis /usr/local/man/man1/, um sie in Zukunft mit dem Befehl man txt2regex aufzurufen:

root# cp txt2regex.man /usr/local/man/man1/txt2regex.1

Das Programm ist jetzt bereit zum Einsatz. Sie starten es mit dem Kommando txt2regex in der Shell.

Optionen

Sehen wir uns zuerst die Optionen der Kommandozeile an, die das Tool bietet. Eine Basiseinstellung betrifft den Hintergrund der virtuellen Textkonsole oder des Xterms, in dem Sie arbeiten. Auf einem hellen Hintergrund ist die Ausgabe des Wizards lesbarer, wenn Sie ihn mit dem Parameter --whitebg starten:

[andreas]~ > txt2regex --whitebg

Völlig farblos präsentiert sich txt2regex mit der Option --nocolor. Um von vornherein die Programme festzulegen, deren Regex das Skript anzeigt, benötigen Sie die Opttion --prog. Im folgenden Beispiel zeigt das Tool die regulären Ausdrücke der Editoren Vim und Emacs und der Programmiersprachen Visual Basic Script und Perl an:

[andreas]~ > txt2regex --prog vim,emacs,vbscript,perl

Um alle möglichen Regex-Varianten anzuzeigen, nutzen Sie den Parameter --all. Es kann passieren, dass das Programm sich selbst im großen Xterm mit der Meldung beendet, Ihr Bildschirm verfüge nicht über genügend Zeilen. Abhilfe schafft hier der vorhergehende Befehl export COLUMNS LINES in der Bash, bevor Sie txt2regex --all starten.

Eine weitere wichtige Option ist --history. Dieser Parameter lädt einen bereits erarbeiteten Ausdruck:

[andreas]~ > txt2regex --history '13¤http://www.linux-user.de'

Das Kürzel 13¤http://www.linux-user.de wird dann als Regex in verschiedenen Programmsprachen dargestellt. Nachdem Sie einen Ausdruck fertiggestellt haben, zeigt Ihnen das Programm das entsprechende Kürzel für die History-Option an. Eine Liste der Meta-Zeichen eines Programms liefert Ihnen der Aufruf --showinfo:

[andreas]~ > txt2regex --showinfo egrep
  Programm  egrep: egrep (GNU grep) 2.4.2
     metas  . [] [^] * + ? {} | ()
  esc meta  \
  need esc  \.*[{()|+?^$
  \t in []  NEIN
 [:POSIX:]  JA

In der ersten Zeile finden Sie den Programmnamen, in diesem Falle egrep. Darunter stehen die Angaben zu den Meta-Zeichen, welche Sonderzeichen maskiert werden müssen oder den Posix-Klassen. Nähere Informationen zu diesem Thema finden Sie unter [2] oder zu egrep auf Ihrem Rechner mit dem Befehl man egrep.

Frage und Antwort

Nach dem Start des Wizards (Abb. 1) sehen Sie in dessen oberen Feld die Angaben Verlassen, zurückstellen, Farbe sowie Programme. Durch Druck auf die Punkt-Taste bedienen, beenden Sie den Editor. Dieser gibt ein Regex-Kürzel aus, dass sie, wie bereits besprochen, über die Option --history verwenden. Außerdem zeigt er Ihnen die Aufschlüsselung Ihres Textmusters an, das Sie verwendet haben, beispielsweise: Beginn der Übereinstimmung am Zeilenanfang, gefolgt von einer Buchstabenfolge...

Abbildung 1

Abbildung 1: Die Startansicht von txt2regex.

Der Auswahlpunkt zurückstellen setzt durch den Druck der Taste [0] alle Eingaben auf Null zurück. Die Sternchen-Taste [*] schaltet hingegen die Farbe ein oder aus. Den wichtigsten Menüpunkt Programme steuern Sie durch den Schrägstrich [/]. Von hier gelangen Sie in eine Übersicht der Programme, mit deren regulären Ausdrücken Sie arbeiten wollen (Abbildung 2).

Abbildung 2

Abbildung 2: Die Auswahl der Programmsprachen

Jetzt beginnt ein Frage- und Antwort-Spiel, mit dem Sie Ihren Ausdruck definieren. Die ersten Informationen betreffen den Beginn der Übereinstimmung des Musters. Sie werden gefragt, ob es sich am Zeilenanfang oder irgendwo in der Zeile befinden soll. Ihre Antwort geben Sie durch einen Druck auf die Taste [1] (Zeilenanfang) oder [2] (irgendwo). Ihre Eingaben erscheinen in reguläre Ausdrücke übersetzt in den Regex-Feldern der angegebenen Programme.

Nach dieser Auswahl öffnet sich eine Ansicht mit der Überschrift gefolgt von:. Sie umfasst neun nummerierte Punkte, die von einem beliebigen Zeichen über eine Liste verbotener Zeichen bis zu etwas Beliebigen reichen.

Haben Sie die Option der erlaubten oder verbotenen Zeichen ausgesucht, werden Sie gefragt welche dies sein sollen. Im nächsten Schritt fragt Sie der Editor wie oft diese Zeichen vorkommen sollen und bietet Ihnen von einmal bis weniger als N mal sieben Möglichkeiten an.

Anschließend gelangen Sie erneut in die Ansicht mit der Überschrift gefolgt von:. Nehmen Sie diesmal den Punkt Buchstabenfolge, werden Sie zum Schreiben des gewünschten Textes aufgefordert. Hinter Punkt 7, der eine POSIX-Kombination festlegt, verbirgt sich eine alphabetische Liste, die Buchstaben, Zahlen, Hexadezimalzahlen oder grafische Zeichen umfasst. Die Punkt-Taste befördert Sie aus dem Posix-Menü.

Auf diese Weise erarbeitet der Wizard ein Textmuster für Sie, ohne dass Sie sich tiefer mit dessen Sonderzeichen beschäftigen müssen. Ist Ihr Ausdruck fertig, schließen Sie mit einem Punkt.

Glossar

Regex

Abkürzung von Regular Expression (dt. regulärer Ausdruck). Eine Kombination aus speziellen Zeichen, die von einem Programm zur Suche von definierten Zeichenketten verwendet werden.

Infos

[1] Homepages des Projektes: http://txt2regex.sourceforge.net/

[2] Artikel zu RegEx: Marc Andre Selig, "Nadel im Heuhaufen", LinuxUser 08/2002, S. 74

Tip a friend    Druckansicht Bookmark and Share
Kommentare

755 Hits
Wertung: 0 Punkte (1 Stimme)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 05/2014

Aktuelle Ausgabe kaufen:

Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,95 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 60,60) können Sie im Medialinx-Shop bestellen.

Tipp der Woche

Bilder vergleichen mit diffimg
Bilder vergleichen mit diffimg
Tim Schürmann, 01.04.2014 12:40, 1 Kommentare

Das kleine Werkzeug diffimg kann zwei (scheinbar) identische Bilder miteinander vergleichen und die Unterschiede optisch hervorheben. Damit lassen sich nicht nur Rätsel a la „Orignial und Fäls...

Aktuelle Fragen

programm suche
Hans-Joachim Köpke, 13.04.2014 10:43, 8 Antworten
suche noch programme die zu windows gibt, die auch unter linux laufen bzw sich ähneln sozusagen a...
Funknetz (Web-Stick)
Hans-Joachim Köpke, 04.04.2014 07:31, 2 Antworten
Bei Windows7 brauche ich den Stick nur ins USB-Fach schieben dann erkennt Windows7 Automatisch, a...
Ubuntu 13.10 überschreibt immer Windows 8 Bootmanager
Thomas Weiss, 15.03.2014 19:20, 8 Antworten
Hallo Leute, ich hoffe das ich richtig bin. Ich habe einen Dell Insipron 660 Ich möchte gerne Ub...
USB-PTP-Class Kamera wird nicht erkannt (Windows-only)
Wimpy *, 14.03.2014 13:04, 15 Antworten
ich habe meiner Frau eine Digitalkamera, AGFA Optima 103, gekauft und wir sind sehr zufrieden dam...
Treiber
Michael Kristahn, 12.03.2014 08:28, 5 Antworten
Habe mir ein Scanner gebraucht gekauft von Canon CanoScan LiDE 70 kein Treiber wie bekomme ich de...