Reguläre Ausdrücke: Unterschied zwischen den Versionen

Aus xinux.net
Zur Navigation springen Zur Suche springen
 
(26 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
*links
+
= Spezialzeichen =
  
https://www.danielfett.de/de/tutorials/tutorial-regulare-ausdrucke/
+
{| 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!'''
 +
|}
  
https://en.wikipedia.org/wiki/Regular_expression
+
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 =
 +
 
 +
* 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