Samstag, 11. Juli 2020

Reguläre Ausdrücke (RegExp) mit Grep - Beispiele

Reguläre Ausdrücke (regular expression oder RegExp) bzw. Zeichenketten, können als Filterkriterien in Textsuchen verwendet werden. Der Text wird dabei mit dem "Muster" des regulären Ausdrucks abgeglichen. Somit kann man etwas suchen und finden, auch dann wenn man nicht mehr die genaue Schreibweise kennt.


Unter Linux kann man Hilfe von grep Dateien nach bestimmten Textzeichen durchsuchen. Unter Windows wäre die Verwendung mit Hilfe von grepWin (Regular expression search and replace for Windows) oder Select-String möglich.

Eine einfache Suche ist mit dem folgenden Befehl möglich:
  • grep 'hemel' \ ~/*
Der Parameter -E von grep definiert einen Regulären Ausdruck und die runden Klammern als Sonderzeichen. Mit dem Parameter -i ignoriert grep zusätzlich Groß- und Kleinschreibung.
Der | Strich (Pipe) steht für ein logisches "oder", somit wird nach dem "h" nach "hemel" und "hamel" gesucht.
  • grep -E -i 'h(e|a)mel' \ ~/*
Möchte man nach mehreren Zeichen inkl. Umlauten suchen, muss man die Zeichengruppe [] inkl. dem Quantifer + verwenden. Jetzt wird nach einem oder mehreren Zeichen gesucht, die innerhalb der [] vorkommen.
  • grep -E -i 'h[\0-9A-F]+mel' \ ~/*

Weitere Beispiele

  • [he]+ "h", "e", "hh", "hheeh" usw.
  • [0-6]{2,5} zwei bis fünf Ziffern von 0-6 in Folge, z. B. "16" oder "23456", jedoch nicht "7", "0.1" oder "1bca2“
  • h.{0,2}mel beliebiges Zeichen, min 0mal, max 2mal vorkommen, z.B. hemel, haemel, hmel

Wichtige Zeichen

  • . einzelnes Zeichen
  • (..) Gruppe von Elementen
  • ..|.. Oder Verknüpfung
  • ^ findet den Anfang einer Zeile
  • $ findet das Ende einer Zeile

Wichtige Zeichengruppen

  • [eam] ein Zeichen "e", "a" oder "m"
  • [0-9A-F] ein großer beliebiger Buchstabe oder eine beliebige Ziffer
  • [A-Za-z0-9] ein beliebiger Buchstabe oder eine beliebige Ziffer

Vordefinierte Zeichenklassen

  • \d Ziffer [0-9]
  • \D keine Ziffer [^\d] bzw. [^0-9]
  • \w Buchstabe [a-zA-Z_0-9]
  • \W weder Buchstabe noch Zahl noch Unterstrich [^\w]
  • \s whitespace Leerzeichen und Steuerzeichen \f, \n, \r, \t und \v
  • \S kein whitespace

Quantifier

  • ? optional, kommt null- oder einmal vor {0,1}
  • * beliebig oft oder auch keinmalt {0,}
  • +  mindestens einmal oder auch mehrfach {1,}
  • {n} muss exakt n-mal vorkommen {n,n}
  • {n,m} muss mindestens n-mal und darf maximal m-mal vorkommen

Unter debuggex.com kann man die erstellte regular expression testen und verstehen.


Keine Kommentare:

Kommentar posten