Alternativen und Wiederholungen

Manchmal ist nicht so ganz klar, was man genau sucht. Wenn sich ein Zeichen (genauer: ein Ausdruck) wiederholen darf, verwenden Sie einen der folgenden Operatoren: Der Stern * zeigt an, dass ein Zeichen in beliebiger Zahl vorkommen darf. a* steht also für ein oder mehrere "a"s – oder auch für den leeren String, der schließlich genau null "a"s enthält und damit die Forderung nach "beliebig vielen" erfüllt. Me*r passt demnach auf "Meer" oder "Meeeeeeer" genauso wie auf "Mr".

Im Gegensatz dazu wiederholt das Pluszeichen + ein Zeichen: Mindestens einmal muss es vorkommen, aber gerne auch öfter. Der reguläre Ausdruck jj+n sucht nach zwei "j"s, von denen eines wiederholt werden darf, gefolgt von einem "n". Damit passt er z. B. auf "jjn" oder "jjjjjjjjjn", aber nicht auf "jn".

Meistens benutzt man die Wiederholungsangaben + und * nicht im Zusammenhang mit vorgegebenen Zeichen, sondern man wiederholt den Punkt, der irgendein anderes Zeichen ersetzt. Der reguläre Ausdruck .* steht für eine beliebige Anzahl beliebiger Zeichen, passt also auf jede nur erdenkliche Textzeile. Die Regexp Jo.*nes ihrerseits passt auf jede Zeile, die ein "Jo" und irgendwo danach "nes" enthält, also z. B. auf "Jones", "Johannes" oder auch "Joghurt ist ein feines Stück Lebensfreude".

.* sucht sich immer einen möglichst langen passenden Abschnitt. Der Ausdruck a.*b passt im String "abcabcabc" auf "abcabcab". Wenn das unerwünscht ist, hängen Sie in Perl ein Fragezeichen an. .*? sucht einen möglichst kurzen passenden Abschnitt, a.*?b findet in "abcabcabc" also gerade noch "ab".

Ein isoliertes Fragezeichen ? verwenden Sie für optionale Anteile: Der vorangehende Buchstabe darf genau null- oder einmal vorkommen. ab?c steht für "ac" oder "abc".

Seltener benötigt und hier nur der Vollständigkeit halber erwähnt ist die Möglichkeit, Wiederholungen zahlenmäßig zu bestimmen. Das tun Sie mit einer geschweiften Klammer, die Mindest- und Höchstzahlen enthalten kann. a{1,7} bezeichnet ein bis sieben "a"s. a{,7} steht für maximal sieben, a{4,} für mindestens vier "a"s.

Mit dem Pipe-Zeichen geben Sie alternative Suchausdrücke an. So zeigt

grep -E '(Bus|Bahn|Flugzeug)' Verkehrsmittel.txt

nur die öffentlichen Verkehrsmittel an. Das grep-Flag -E sagt dem Suchwerkzeug, dass es mit einem "erweiterten" regulären Ausdruck gefüttert wird. Ohne diese Option interpretiert es die Suchangabe als das gesuchte Wort.

Zeichenbereiche

Ein Zeichenbereich ist ein Ausdruck, der für eines von mehreren Zeichen steht, zum Beispiel nur für Buchstaben oder nur für Umlaute. Interaktiv in emacs oder vi wird man das wohl nicht so oft einsetzen, aber in Skriptsprachen sind Zeichenbereiche ganz praktisch, etwa wenn man bei der CGI-Programmierung sicher stellen kann, welche Zeichen als Eingabe erlaubt sind.

Bereiche werden durch eckige Klammern definiert. Dazwischen steht, welche Zeichen erlaubt sind. [abc] umfasst "a", "b" oder "c". Solche Bereiche lassen sich nach Lust und Laune mit anderen Sonderzeichen kombinieren: [abc]+ passt auf "a", "aa", "abababc" usw.

Bindestriche (alias Minuszeichen) erleichtern die Definition größerer Bereiche. [a-z] steht für einen beliebigen Kleinbuchstaben, [a-zA-Z0-9] für ein alphanumerisches Zeichen. Wenn das Minus selbst im Bereich enthalten sein soll, stellen Sie es an den Anfang: Der Bereich [-+a-z] enthält alle Kleinbuchstaben sowie Plus und Minus.

Das Caret ^ als erstes Zeichen innerhalb der eckigen Klammern kehrt die Bedeutung einer Bereichsdefinition um: Die angegebenen Zeichen dürfen nicht vorkommen. Alle Zeichen außer dem Z finden Sie mit [^Z]. Wenn Sie aus einer Datei alle Zeilen sehen möchten, die nicht mit Y oder Z beginnen (und auch nicht leer sind), schreiben Sie ^[^YZ]. Das Caret am Anfang der Regexp steht für einen Zeilenbeginn, unmittelbar danach muss ein beliebiges Zeichen außer Y oder Z stehen.

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...