Reguläre Ausdrücke: Unterschied zwischen den Versionen
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 | ||
− | | | + | |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. | ||
− | + | ;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 = | |
− | 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 | + | *Es ist empfehlenswert das Suchmuster in Anführungszeichen zu schreiben. |
− | schreiben. | ||
− | + | = Beispiele = | |
+ | |||
+ | * '''vim text''' | ||
− | |||
quatsch | quatsch | ||
quatsch | quatsch | ||
Zeile 92: | Zeile 98: | ||
wichtig | wichtig | ||
quatsch | quatsch | ||
− | + | ||
+ | * '''grep "wichtig" text''' | ||
+ | |||
wichtig | 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 | -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 | + | -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 | ||
− | + | = Links = | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | 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