Haben Sie jemals versucht, ein wiederkehrendes Muster in einem Text zu finden? Vielleicht haben Sie so etwas wie die Suchfunktion in Ihrem Browser oder Textverarbeitungsprogramm verwendet, aber wenn Sie etwas komplizierteres suchen müssen, kann es sein, als ob Sie eine Nadel im sprichwörtlichen Heuhaufen finden würden.

Glücklicherweise gibt es eine Möglichkeit, präzise Muster im Text bis zum Charakter auszuwählen. Es nennt sich reguläre Ausdrücke und lässt Sie zum Meister der Textsuche werden.

Wenn Sie Linux-Dienstprogrammen überhaupt Aufmerksamkeit geschenkt haben, werden Sie wahrscheinlich bemerken, dass sie häufig etwas verwenden, das als reguläre Ausdrücke bezeichnet wird. Obwohl sie unter Unix und Linux populär wurden, sind reguläre Ausdrücke in einer Vielzahl von Paketen verfügbar, einschließlich Microsoft Word.

Reguläre Ausdrücke werden vor allem in einigen bemerkenswerten Linux-Programmen verwendet, einschließlich grep (was für Global Regular Expression Print steht), Awk und Sed.

Es ist besser, reguläre Ausdrücke als eine kleine Sprache zu betrachten, deren Grundlagen auf kleinem Raum beschrieben werden können.

Sie können mit Werkzeugen wie Grep oder Ack entweder aus der Standardeingabe oder einer Textdatei suchen.

Wenn Sie beispielsweise in der Ausgabe des Befehls ps den Begriff "Firefox" finden möchten, gehen Sie folgendermaßen vor:

 ps | grep firefox 

Und so würden Sie den Begriff "makecheasier" in einer Datei finden.

 grep maketecheasier somefile 

Metazeichen

In regulären Ausdrücken können Sie auch nach Teilen eines Strings suchen. Die Art und Weise, wie Sie dies tun, ist mit zwei Zeichen. Sie werden eigentlich Metazeichen genannt. Sie ähneln den Platzhalter-Übereinstimmungen, die Sie möglicherweise in der Shell verwendet haben.

  • "." Steht für ein einzelnes Zeichen. Das Muster "ct" entspricht beispielsweise den Wörtern "cat", "cut" und "cot".
  • Das Metazeichen "*" bedeutet, das vorherige Zeichen mindestens 0 Mal zu finden. Das Muster "l. * X" würde "linux" finden, genauso wie alle anderen Wörter, die zufällig auf dasselbe Muster passen.

Der Grund, warum Sie so etwas wie "l*x" wie in der Shell verwenden können, ist, dass die Übereinstimmung von 0 oder mehr Zeichen bedeutet, dass Zeilen gefunden werden, die kein "l" haben, gefolgt von einem anderen Zeichen. Mit anderen Worten, jede Zeile, die versucht wird, abgeglichen zu werden, was absolut nutzlos ist.

Muster am Anfang oder am Ende finden

Sie können auch Muster finden, die am Anfang oder am Ende von Zeilen beginnen.

  • Das Zeichen "^" entspricht am Anfang
  • Das "$" wurde am Ende gefunden.

Beispiel: "sier$" "Make Tech Easier" und "^Make" "Make".

Übereinstimmung in einem Bereich finden

Sie können auch in kompliziertere Charaktere kommen. Alles, was Sie in eckige Klammern setzen, wird als Bereich abgeglichen. Beispiel: " [az] " stimmt mit allen Kleinbuchstaben überein. " [a-zA-Z] " stimmt mit allen Buchstaben überein. " [a-zA-Z0-9] " entspricht alphanumerischen Zeichen. Innerhalb der Klammern negiert das Zeichen "^" alles. " [^a-zA-Z] " entspricht allem, was kein Buchstabe ist.

Sie können Wortgrenzen auch mit den Zeichen " \< " und " \> " finden. Das Muster " \ " entspricht offensichtlich "Linux".

Sie können eine bestimmte Anzahl von Malen mit geschweiften Klammern vergleichen. " {3} " entspricht etwas dreimal und " {3, 5} " entspricht etwas zwischen 3 und 5 Mal.

Mit diesen einfachen Bausteinen können Sie einige ziemlich komplizierte Sachen zusammenbringen. Reguläre Ausdrücke sind viel mehr, als in einem kurzen Artikel erklärt werden kann. Wenn Sie eine umfassende Behandlung des Themas in Buchlänge wünschen, sollten Sie sich unbedingt Mastering Regular Expressions ansehen von Jeffrey EF Friedl.

Offenlegung: Dieser Artikel enthält einen Affiliate-Link. Während wir nur über Produkte schreiben, die wir verdienen, auf dieser Seite zu sein, kann Make Tech Easier eine kleine Provision verdienen, wenn Sie das betreffende Produkt anklicken und kaufen.

Bildquelle: xkcd