Reguläre Ausdrücke: Unterschied zwischen den Versionen

Aus xinux.net
Zur Navigation springen Zur Suche springen
 
(16 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
= Spezialzeichen =
 
= Spezialzeichen =
  
* '''.''': Ein Punkt passt auf jedes Zeichen außer auf das Zeilenende
+
{| Border=1 Cellpadding=2
 +
|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
 +
|-
 +
|<nowiki>|</nowiki>
 +
|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!'''
 +
|}
  
|- |'' |Das dem Operator '' vorangehende Muster kann 0 oder öfter vorkommen |- |^ |(Caret) passt auf den Zeilenanfang |- |$ |Passt auf das Zeilenende |- |<br />
+
Die Rangfolge der Operatoren(von der höchsten zur niedrigsten)
|Das folgende Sonderzeichen wird entwertet |- |[…] |Passt auf “genau” eins in […] angebenen Zeichen |- |[^...] |Passt auf “genau” ein Zeichen welches nicht in […] angebenen ist |- |&lt; |Passt auf den Wortanfang |- |&gt; |Passt auf das Wortende |- |+ |Das dem Operator + vorangehende Muster kann 1 oder öfter vorkommen |- |&amp; |Setzt das gefunden Suchmuster ein |- |() |Speichert den Text auf den das Suchmuster passt zur späteren Verwendung |- | |Setzt das vorangehende, mit (…) Gefundene wieder ein |- |(…) |Gruppiert Auswahlmöglichkeiten |- |<nowiki>|</nowiki> |Trennt Auswahlmöglichkeiten |- |Passt auf den Anfang oder das Ende eines Wortes |- | |Symbolisiert den Raum innerhalb eines Wortes |- | |Passt auf alle alphanumerischen Zeichen [A-Za-z0-9] |- | |Passt auf alle nichtalphanumerischen Zeichen [^A-Za-z0-9] |- |Passt auf alle numerischen Zeichen = [0-9] |- | |Passt auf alle nichtnumerischen Zeichen = [0-9] |}
+
:(, ), ?, *, + | .
  
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.
Zeile 16: Zeile 81:
 
  [tT]uxer                Tuxer oder tuxer
 
  [tT]uxer                Tuxer oder tuxer
 
  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 eine Übereinstimmung gefunden wird, wird die komplette Zeile auf die Standardausgabe geschrieben. grep kann auch von STDIN lesen.Es ist empfehlenswert, sich anzugwöhnen ,das Suchmuster in Anführungszeichen zu schreiben. Es gibt 3 Arten fgrep = fastgrep , grep und egrep
+
*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.
  
;Beispiel:
+
= Beispiele =
 +
 
 +
* '''vim text'''
  
root@zero:~# cat text
 
 
  quatsch
 
  quatsch
 
  quatsch
 
  quatsch
Zeile 28: Zeile 98:
 
  wichtig
 
  wichtig
 
  quatsch
 
  quatsch
root@zero:~# grep wichtig text
+
 
 +
* '''grep "wichtig" text'''
 +
 
 
  wichtig
 
  wichtig
root@zero:~#
 
 
-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
 
;Valid E-Mail regex
 
  
  root@zero:~# cat mail
+
* '''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
 
  Max.Mustermann@Beispiel.de
 
  Hallo@Welt.de
 
  Hallo@Welt.de
Zeile 57: 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 63: 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.
 +
 +
 +
 +
== 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 =
 
= Links =

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