Gruppen

Bevor sich dieser Artikel der Praxis zuwendet, noch ein letztes wichtiges Konstrukt. Wiederholungszeichen wie * gelten immer nur für das Zeichen bzw. genauer für den Ausdruck, der unmittelbar vor ihnen steht. In abc* wird nur das "c" wiederholt, diese Regexp passt also auf "abcc", aber nicht auf "abcabc".

Durch runde Klammern umschließen Sie eine Regexp zu einer Gruppe. (abc) bedeutet effektiv das gleiche wie abc, aber intern funktioniert die Suche ganz anders: abc enthält die drei Suchausdrücke "a", "b" und "c", die nacheinander gefunden werden müssen. (abc) enthält als einzelnen Suchausdruck die Gruppe "abc". Auf diese können Sie nun weitere Funktionen anwenden: (abc)* wiederholt die gesamte Gruppe. Dieser Ausdruck findet "abcabcabc" ebenso wie "abc" oder den leeren String, aber nicht mehr "abcc".

Die Shell frisst aus der Hand

Ein ganz wichtiger Grund, warum reguläre Ausdrücke so beliebt sind, ist die hoffnungslose Verwirrung, in die man beim Umgang mit ihnen immer wieder stürzt. Reguläre Ausdrücke sind ja soooo schön unleserlich, wenn sie kompliziert werden. Hier ein kleines Beispiel aus der perlfaq6-Manpage:

/\*[^*]*\*+([^/*][^*]*\*+)*/|("(\\.|[^"\\])*"|'(\\.|[^'\\])*'|\n+|.[^/"'\\]*)

Dieses Ungetüm soll Kommentare in einem C-Programm finden, dabei jedoch scheinbare Kommentarzeichen in Strings ignorieren. Nein, ich habe es nicht ausprobiert, und nein, auch Profis können sowas nicht mehr "lesen", höchstens mühsam auseinanderklamüsern.

Richtig fies wird es durch allerlei Komplikationen. Reguläre Ausdrücke verwendet man in tausend verschiedenen Programmen, und natürlich hat jedes davon seine eigene Implementation mit eigenen Features und eigenen Ausnahmeregelungen.

Die erste Falle, in die man meistens tappt, sind die Backslashes, vor allem in Kombination mit den runden Klammern für die Gruppendefinition. Wir hatten festgestellt: (abc)+ sucht Wiederholungen der Zeichenfolge "abc", z. B. auch "abcabc" oder "abcabcabc". Leider müssen Sonderzeichen wie die runden Klammern oder das Plus oft erst durch einen Backslash aktiviert werden. Wenn Sie mit Perl arbeiten, heißt die Regexp korrekt (abc)+. In grep hingegen muss sie \(abc\)\+ lauten. egrep oder grep -E sucht nach "Extended Regular Expressions" und versteht (abc)+ direkt.

Backslashes mag die Shell auch sehr gerne, sogar zum Fressen gern. Eine kleine Demonstration gefällig? Der Befehl

echo \(abc\)\+

gibt den Text "(abc)+" aus – die Shell hat alle Backslashes "weggefressen". Schützen Sie Ihre Sonderzeichen also mit einem zusätzlichen Backslash vor der Shell. grep \\\(abc\\\)\\+ funktioniert. Einfacher und lesbarer: Verwenden Sie Anführungszeichen, am besten einfache (also Apostrophen): grep '\(abc\)\+' tut dasselbe und ist übersichtlicher.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Praktisch und nützlich: AWK
    Ein Unix-Rechner erschlägt den Anwender förmlich mit kleinen Helferlein, die ihm so gerne zu Diensten wären. Leider lassen sie sich nicht immer ganz problemlos bedienen. Die Textbearbeitungssprache AWK ist ein typisches Beispiel.
  • Zu Befehl: Suchen mit grep, egrep, fgrep, (b)zgrep
    Für die Suche nach Wörtern und Ausdrücken in Textdateien bieten sich die Kommandos der grep-Familie an. Als Ergebnis zeigen sie wahlweise die gefundenen Zeilen, die Namen der Dateien, in denen das Suchmuster vorkommt, oder die Anzahl der Treffer an.
  • The Answer Girl
    Dass der Computeralltag auch unter Linux immer wieder für Überraschungen gut ist, ist eher eine Binsenweisheit: Immer wieder funktionieren Dinge nicht oder nicht so, wie eigentlich angenommen. Das Answer-Girl im Linux-Magazin zeigt, wie man mit solchen Problemchen elegant fertig wird.
  • Gut gefiltert
    Zu den häufigsten Aufgaben bei der Arbeit am Rechner zählt das Durchstöbern von Texten nach Suchmustern. Icgrep bietet hier eine moderne, parallel arbeitende und Unicode-fähige Alternative zum klassischen Grep.
  • Erste Schritte mit Regular Expressions
    Computer erleichtern die Arbeit – man muss ihnen nur genau sagen, was sie tun sollen. Mit regulären Ausdrücken beschleunigen Sie das Suchen und Ersetzen von Zeichenketten auf elegante Art.
Kommentare

Infos zur Publikation

LU 10/2017: Daten retten & sichern

Digitale Ausgabe: Preis € 8,50
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 2 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...
Backup mit KUP unter Suse 42.3
Horst Schwarz, 24.09.2017 13:16, 3 Antworten
Ich möchte auch wieder unter Suse 42.3 mit Kup meine Backup durchführen. Eine Installationsmöglic...
kein foto, etc. upload möglich, wo liegt mein fehler?
kerstin brums, 17.09.2017 22:08, 5 Antworten
moin, zum erstellen einer einfachen wordpress website kann ich keine fotos uploaden. vom rechne...
Arch Linux Netzwerkkonfigurationen
Franziska Schley, 15.09.2017 18:04, 0 Antworten
Moin liebe Linux community, ich habe momentan Probleme mit der Einstellung des Lan/Wlan in Arc...