Reguläre Ausdrücke

Aus xinux.net
Zur Navigation springen Zur Suche springen

Spezialzeichen

A-z Ein einzelner Buchstabe passt auf sich selbst
. Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende
* Das dem Operator * vorangehende Muster kann 0 oder öfter vorkommen
^ (Caret) passt auf den Zeilenanfang
$ Passt auf das Zeilenende
\ Das folgende Sonderzeichen wird entwertet
[...] Passt auf "genau" eins in [...] angebenen Zeichen entwertet RegEx Sonderzeichen außer ^
[^...] Passt auf "genau" ein Zeichen welches nicht in [...] angebenen ist entwertet RegEx Sonderzeichen außer ^
\< Passt auf den Wortanfang
\> Passt auf das Wortende
\+ Das dem Operator \+ vorangehende Muster kann 1 oder öfter vorkommen
& Setzt das gefunden Suchmuster ein
\(...\) Speichert den Text auf den das Suchmuster passt zur späteren Verwendung
\n Setzt das vorangehende, mit \(...\) Gefundene wieder ein
(...) Gruppiert Auswahlmöglichkeiten
| Trennt Auswahlmöglichkeiten
\b Passt auf den Anfang oder das Ende eines Wortes
\B Symbolisiert den Raum innerhalb eines Wortes
\w Passt auf alle alphanumerischen Zeichen [A-Za-z0-9]
\W Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]
\d Passt auf alle numerischen Zeichen = [0-9] Nur in Perl RegEx!
\D Passt auf alle nichtnumerischen Zeichen = [0-9] Nur in Perl RegEx!

Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)

(, ), ?, *, + | .


Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.

Beispiele
Suchmuster               Passt auf
^Tuxer                   Tuxer am Zeilenanfang
[tT]uxer                 Tuxer oder tuxer
80[23]?86                8086, 80286 oder 80386

grep

  • Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen.
  • Wenn eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die Standardausgabe geschrieben.
  • grep kann auch von STDIN lesen.
  • Es ist empfehlenswert das Suchmuster in Anführungszeichen zu schreiben.

Beispiele

  • vim text
quatsch
quatsch
quatsch
wichtig
quatsch
  • grep "wichtig" text
wichtig
  • grep "xinux" /etc/passwd
xinux:x:1000:1000:xinux,,,:/home/xinux:/bin/bash
  • grep "1[0-9][0-9][0-9]" /etc/passwd
xinux:x:1000:1000:xinux,,,:/home/xinux:/bin/bash
  • grep "x\w\+x" /etc/passwd
xinux:x:1000:1000:xinux,,,:/home/xinux:/bin/bash
  • grep "^root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
  • ls -l /etc | grep shadow
-rw-r-----  1 root shadow  1003 Mär 19 20:18 gshadow
-rw-r-----  1 root shadow   995 Jan 16 19:30 gshadow-
-rw-r-----  1 root shadow  1615 Mär 19 20:18 shadow
-rw-r-----  1 root shadow  1615 Mär 19 20:18 shadow-
Echte E-Mail-Adresse RegEx
  • vim mail
Max.Mustermann@Beispiel.de
Hallo@Welt.de
Irgendwas Anderes
Böse Adresse@+++.de
DieHier@GehtWieder.de
DieHier@@GehtWiederNicht.de
Auch01927Zahlen@SindErlaubt.com
Lokaler_Teil_Erlaubt_Unterstriche@Tests.com
Tests@Globaler_Teile_Aber_nicht.com

  • grep -P "[\w.%+-]+@[\w.-][^_]+\.[a-z]{2,}" mail
Max.Mustermann@Beispiel.de
Hallo@Welt.de
DieHier@GehtWieder.de
Auch01927Zahlen@SindErlaubt.com
Lokaler_Teil_Erlaubt_Unterstriche@Tests.com
[\w.%+-]+
  • Dieser Teil entspricht einem oder mehreren alphanumerischen Zeichen (\w), Punkten (.), Prozentzeichen (%), Pluszeichen (+) oder Minuszeichen (-).
  • Dies ist der Teil vor dem "@"-Symbol in der E-Mail-Adresse, also der Benutzername.
@
  • Dies ist einfach das "@"-Symbol, das in einer gültigen E-Mail-Adresse vorhanden sein muss.
[\w.-]
  • Dieser Teil entspricht einem alphanumerischen Zeichen (\w), einem Punkt (.) oder einem Minuszeichen (-).
  • Dies ist der erste Teil der Domain nach dem "@"-Symbol.
[^_]+
  • Hier steht [^_], was bedeutet, dass ein Unterstrich (_) in diesem Teil nicht erlaubt ist.
  • Dieser Teil entspricht einem oder mehreren Zeichen, die nicht der Unterstrich sind.
  • Dies ist der zweite Teil der Domain.
\.
  • Dies entspricht einem Punkt (.), der das Trennzeichen zwischen dem Domänennamen und der Top-Level-Domain (TLD) markiert.
[a-z]{2,}
  • Dies entspricht zwei oder mehr kleinen Buchstaben (von a bis z), was die TLD repräsentiert.


Mehr Optionen für grep

-c                   meldet nur die Gesamtzahl der Fundstellen
-v                   zeigt nur Zeilen, die »Ausdruck« nicht enthalten
-i                   ignoriert Groß- und Kleinschreibung
-l                   meldet nur Dateinamen mit Fundstellen
-n                   listet Zeilennummern zu jeder Fundstelle
-f                   Dateiname »Dateiname« enthält die Such-Ausdrücke
-E                   ist ein erweiterter regulärer Ausdruck (egrep)
-F                   (Muster, Ausdruck) ist ein Muster (String) (fgrep)
-b                   listet auch die Position der Fundstellen
-A    Anzahl         Anzahl von Zeilen werden nach der Fundstelle ausgegeben
-B    Anzahl         Anzahl von Zeilen werden vor der Fundstelle ausgegeben
-r                   Durchsucht Verzeichnisse rekursiv

Links