Reguläre Ausdrücke: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 4: | Zeile 4: | ||
*Durch seine Kombination aus festen und variablen Elementen ermöglicht Regex das Auffinden von komplexen Mustern wie E-Mail-Adressen, Telefonnummern oder spezifischen Wortkombinationen in großen Textmengen. | *Durch seine Kombination aus festen und variablen Elementen ermöglicht Regex das Auffinden von komplexen Mustern wie E-Mail-Adressen, Telefonnummern oder spezifischen Wortkombinationen in großen Textmengen. | ||
| − | =Wo kann ich | + | =Wo kann ich Reguläre Ausdrücke benutzen= |
Viele Programme und Tools unterstützen reguläre Ausdrücke (Regex) für die Textsuche, -manipulation und -verarbeitung. Hier sind einige gängige Programme und Anwendungen, die Regex unterstützen: | Viele Programme und Tools unterstützen reguläre Ausdrücke (Regex) für die Textsuche, -manipulation und -verarbeitung. Hier sind einige gängige Programme und Anwendungen, die Regex unterstützen: | ||
Version vom 27. November 2024, 22:09 Uhr
Was ist Reguläre Ausdrücke
- Ein regulärer Ausdruck (Regex) ist eine spezialisierte Syntax, die verwendet wird, um Muster in Texten präzise zu definieren.
- Er dient dazu, Zeichenfolgen zu durchsuchen, zu überprüfen oder zu manipulieren.
- Durch seine Kombination aus festen und variablen Elementen ermöglicht Regex das Auffinden von komplexen Mustern wie E-Mail-Adressen, Telefonnummern oder spezifischen Wortkombinationen in großen Textmengen.
Wo kann ich Reguläre Ausdrücke benutzen
Viele Programme und Tools unterstützen reguläre Ausdrücke (Regex) für die Textsuche, -manipulation und -verarbeitung. Hier sind einige gängige Programme und Anwendungen, die Regex unterstützen:
Texteditoren
- Vim / Neovim: Leistungsstarker Texteditor mit umfassender Regex-Unterstützung.
- Emacs: Bietet Regex-Optionen zum Suchen und Ersetzen.
- Sublime Text: Ermöglicht die Verwendung von Regex für die Textsuche.
- Visual Studio Code: Unterstützt Regex in der Suche und beim Ersetzen.
- Notepad++: Bietet Regex-Optionen für Suchen und Ersetzen.
- Atom: Ermöglicht Regex in der integrierten Suche.
Betriebssystem-Tools
- grep (Linux/Unix): Ein Kommandozeilen-Tool, das Regex für die Textsuche nutzt.
- sed (Stream Editor, Linux/Unix): Unterstützt Regex für Textmanipulation in Streams.
- awk (Linux/Unix): Bietet Regex-Unterstützung für Textverarbeitung und Datenextraktion.
- find (Linux/Unix): Kann Regex für Dateisuchmuster verwenden.
Programmiersprachen
- Python: Das re-Modul bietet eine umfassende Regex-Implementierung.
- JavaScript: Regex wird direkt in der Sprache unterstützt (z.B. RegExp-Objekt).
- Java: Bietet mit der java.util.regex-Bibliothek eine leistungsstarke Regex-Implementierung.
- Ruby: In Ruby ist Regex in die Sprache integriert und wird über die Regexp-Klasse verwendet.
- Perl: Bekannt für seine starke Unterstützung von Regex, die direkt in der Sprache integriert ist.
- PHP: Bietet mehrere Funktionen zur Regex-Verarbeitung (preg_*).
Datenbanken
- MySQL: Unterstützt Regex mit der REGEXP-Funktion in SQL-Abfragen.
- PostgreSQL: Bietet Regex-Funktionen wie ~ für die Mustererkennung in Abfragen.
- MongoDB: Unterstützt Regex in Abfragen über die $regex-Operatoren.
Webbrowser
- Chrome DevTools: Unterstützt Regex in der JavaScript-Konsole und für die Netzwerksuche.
- Firefox Developer Tools: Unterstützt Regex für die Suche in den Entwicklertools.
Software zur Datenanalyse
- Microsoft Excel: Mit bestimmten Add-Ons oder in VBA kann Regex verwendet werden.
- R: Das stringr-Paket unterstützt Regex zur Textmanipulation und -analyse.
- Excel und Google Sheets: Mit bestimmten Funktionen oder Makros kann Regex zur Textsuche und -manipulation verwendet werden.
Suchmaschinen und Online-Tools
- grep Online: Online-Tools zum Testen von Regex-Ausdrücken.
- Regex101: Eine interaktive Webseite zum Testen und Debuggen von Regex-Ausdrücken.
- Google Search: Unterstützt einfache Regex für die erweiterte Suchsyntax (meist mit speziellen Platzhaltern wie *).
grep
- grep Steht für Global Regular Expression Print.
- Suchen von Textmustern in Dateien oder Datenströmen mit Regulären Ausdrücken.
- Arbeitet zeilenbasiert. Gibt standardmäßig ganze Zeilen aus, die das Muster enthalten.
- 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.
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
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
Übung
Textvorlage
Kopieren sie folgenden Text in eine Datei text.txt
Alice hat 3 Katzen. Bob mag Hunde, besonders Labrador Retriever. Charlie sagte: "Ich habe keine Haustiere." Alice besucht oft den Park mit ihren Katzen. 42 ist die Antwort auf alles. Bob kaufte gestern 13 Bananen und 3 Äpfel. Charlie fragte: "Ist 7 eine Glückszahl?"
Aufgaben
- Finde alle Zeilen, die das Wort Alice enthalten.
- Finde Zeilen, die mit einem Großbuchstaben beginnen.
- Suche nach Zeilen, die eine Zahl enthalten.
- Finde Zeilen, in denen das Wort Charlie am Anfang steht.
- Suche nach Zeilen, die mit einem Punkt . enden.
- Finde Zeilen, in denen die Zahl 3 als eigenständige Zahl vorkommt (z. B. nicht in 42).
- Suche nach Zeilen, in denen entweder Katzen oder Hunde vorkommen.
- Finde Zeilen mit genau einem Anführungszeichen (").
- Suche nach Zeilen, in denen eine Zahl mit mindestens zwei Ziffern vorkommt.
- Finde Zeilen, die den Buchstaben b (Groß- oder Kleinschreibung) enthalten.