Reguläre Ausdrücke: Unterschied zwischen den Versionen

Aus xinux.net
Zur Navigation springen Zur Suche springen
 
(22 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 +
= Spezialzeichen =
 +
 
{| Border=1 Cellpadding=2
 
{| Border=1 Cellpadding=2
|c
+
|A-z
 
|Ein einzelner Buchstabe passt auf sich selbst
 
|Ein einzelner Buchstabe passt auf sich selbst
 
|-
 
|-
Zeile 19: 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 60: Zeile 62:
 
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]
 
|Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9]
 
|-
 
|-
|\d
+
|\d  
|Passt auf alle numerischen Zeichen = [0-9]
+
|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 Rangfolge der Operatoren(von der höchsten zur niedrigsten)
 
:(, ), ?, *, + | .
 
:(, ), ?, *, + | .
 +
  
 
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.
 
Die anderen Operatoren sind mit den anderen Buchstaben gleichrangig.
  
===Beispiel zum Suchen===
+
;Beispiele
  
 
  Suchmuster              Passt auf
 
  Suchmuster              Passt auf
Zeile 76: Zeile 82:
 
  80[23]?86                8086, 80286 oder 80386
 
  80[23]?86                8086, 80286 oder 80386
  
===grep===
+
= grep =
  
Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen. Wenn
+
*Mit grep ist es möglich, in Dateien nach regulären Ausdrücken zu suchen.
eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die
+
*Wenn eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die Standardausgabe geschrieben.
Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist
+
*grep kann auch von STDIN lesen.
empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu
+
*Es ist empfehlenswert das Suchmuster in Anführungszeichen zu schreiben.
schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep egrep
 
  
Beispiel:
+
= Beispiele =
 +
 
 +
* '''vim text'''
  
root@zero:~# cat text
 
 
  quatsch
 
  quatsch
 
  quatsch
 
  quatsch
Zeile 92: Zeile 98:
 
  wichtig
 
  wichtig
 
  quatsch
 
  quatsch
root@zero:~# grep wichtig text
+
 
 +
* '''grep "wichtig" text'''
 +
 
 
  wichtig
 
  wichtig
root@zero:~#
 
  
 +
* '''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
 
  -c                  meldet nur die Gesamtzahl der Fundstellen
 
  -v                  zeigt nur Zeilen, die »Ausdruck« nicht enthalten
 
  -v                  zeigt nur Zeilen, die »Ausdruck« nicht enthalten
 
  -i                  ignoriert Groß- und Kleinschreibung
 
  -i                  ignoriert Groß- und Kleinschreibung
  -l                   meldet nur Dateinamen mit Fundstellen
+
  -l                   meldet nur Dateinamen mit Fundstellen
 
  -n                  listet Zeilennummern zu jeder Fundstelle
 
  -n                  listet Zeilennummern zu jeder Fundstelle
 
  -f                  Dateiname »Dateiname« enthält die Such-Ausdrücke
 
  -f                  Dateiname »Dateiname« enthält die Such-Ausdrücke
Zeile 109: Zeile 179:
 
  -r                  Durchsucht Verzeichnisse rekursiv
 
  -r                  Durchsucht Verzeichnisse rekursiv
  
;Valid E-Mail regex
+
= Links =
<pre>
 
root@zero:~# cat 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
 
 
 
root@zero:~# 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
 
 
 
</pre>
 
 
 
 
 
*links
 
https://www.danielfett.de/de/tutorials/tutorial-regulare-ausdrucke/
 
  
https://en.wikipedia.org/wiki/Regular_expression
+
* https://www.danielfett.de/de/tutorials/tutorial-regulare-ausdrucke/
 +
* https://en.wikipedia.org/wiki/Regular_expression

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