Reguläre Ausdrücke: Unterschied zwischen den Versionen

Aus xinux.net
Zur Navigation springen Zur Suche springen
 
(9 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 21: Zeile 21:
 
|-
 
|-
 
|[...]
 
|[...]
|Passt auf "genau" eins in [...] angebenen Zeichen
+
|Passt auf "genau" eins in [...] angebenen Zeichen '''entwertet RegEx Sonderzeichen außer ^'''
 
|-
 
|-
 
|[^...]
 
|[^...]
|Passt auf "genau" ein Zeichen welches nicht in [...] angebenen ist
+
|Passt auf "genau" ein Zeichen welches nicht in [...] angebenen ist '''entwertet RegEx Sonderzeichen außer ^'''
 
|-
 
|-
 
|\<
 
|\<
Zeile 88: Zeile 88:
 
*grep kann auch von STDIN lesen.
 
*grep kann auch von STDIN lesen.
 
*Es ist empfehlenswert das Suchmuster in Anführungszeichen zu schreiben.
 
*Es ist empfehlenswert das Suchmuster in Anführungszeichen zu schreiben.
*Mit pgrep kann man auch laufende filtern
 
  
 
= Beispiele =
 
= Beispiele =
 +
 +
* '''vim text'''
 +
 +
quatsch
 +
quatsch
 +
quatsch
 +
wichtig
 +
quatsch
 +
 +
* '''grep "wichtig" text'''
 +
 +
wichtig
  
 
* '''grep "xinux" /etc/passwd'''
 
* '''grep "xinux" /etc/passwd'''
Zeile 108: Zeile 119:
 
  root:x:0:0:root:/root:/bin/bash
 
  root:x:0:0:root:/root:/bin/bash
  
* '''vim text'''
+
* '''ls -l /etc | grep shadow'''
  
  quatsch
+
  -rw-r-----  1 root shadow  1003 Mär 19 20:18 gshadow
  quatsch
+
  -rw-r-----  1 root shadow  995 Jan 16 19:30 gshadow-
  quatsch
+
  -rw-r-----  1 root shadow  1615 Mär 19 20:18 shadow
  wichtig
+
  -rw-r-----  1 root shadow 1615 Mär 19 20:18 shadow-
  quatsch
 
  
* '''grep wichtig text'''
+
;Echte E-Mail-Adresse RegEx
  
wichtig
+
* '''vim mail'''
 
 
;Valid E-Mail regex
 
 
 
root@zero:~# cat mail
 
 
  Max.Mustermann@Beispiel.de
 
  Max.Mustermann@Beispiel.de
 
  Hallo@Welt.de
 
  Hallo@Welt.de
Zeile 133: Zeile 139:
 
  Tests@Globaler_Teile_Aber_nicht.com
 
  Tests@Globaler_Teile_Aber_nicht.com
 
   
 
   
root@zero:~# grep -P "[\w.%+-]+@[\w.-][^_]+\.[a-z]{2,}" mail
+
* '''grep -P "[\w.%+-]+@[\w.-][^_]+\.[a-z]{2,}" mail'''
 
  Max.Mustermann@Beispiel.de
 
  Max.Mustermann@Beispiel.de
 
  Hallo@Welt.de
 
  Hallo@Welt.de
Zeile 139: Zeile 145:
 
  Auch01927Zahlen@SindErlaubt.com
 
  Auch01927Zahlen@SindErlaubt.com
 
  Lokaler_Teil_Erlaubt_Unterstriche@Tests.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.
 +
  
  

Aktuelle Version vom 16. November 2023, 15:44 Uhr

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