8AF9D9B3-6B91-4C73-8758-35B137D781AC.JPG
Document Details

Uploaded by WellLosAngeles1069
Full Transcript
# Reguläre Ausdrücke Ein regulärer Ausdruck (Regex oder RegExp) ist eine Zeichenkette, die verwendet wird, um Mengen von Zeichenketten gemäß bestimmten syntaktischen Regeln zu beschreiben. Reguläre Ausdrücke werden von vielen Texteditoren und Dienstprogrammen verwendet, um Textkörper anhand von Mus...
# Reguläre Ausdrücke Ein regulärer Ausdruck (Regex oder RegExp) ist eine Zeichenkette, die verwendet wird, um Mengen von Zeichenketten gemäß bestimmten syntaktischen Regeln zu beschreiben. Reguläre Ausdrücke werden von vielen Texteditoren und Dienstprogrammen verwendet, um Textkörper anhand von Mustern zu durchsuchen und zu bearbeiten. Viele Programmiersprachen unterstützen reguläre Ausdrücke für Zeichenkettenoperationen. Zum Beispiel unterstützen Perl und Tcl reguläre Ausdrücke nativ in ihrer Syntax. Die Suite von Dienstprogrammen, die mit BSD und Linux-Distributionen geliefert werden, wie z. B. sed, awk, grep, egrep, vi, emacs, etc., enthalten alle reguläre Ausdrücke. ## Einführung Ein regulärer Ausdruck ist ein Muster, das der Regex-Engine angetrieben wird, um Text zu verarbeiten. Das einfachste Muster ist ein einzelnes Zeichen. Zum Beispiel könnte der reguläre Ausdruck `a` nur mit Kleinbuchstaben 'a' übereinstimmen. Kombinationen einfacher Zeichen bilden komplexere Muster. Zum Beispiel könnte der reguläre Ausdruck `ab` mit der Zeichenkette 'ab' übereinstimmen. ## Metazeichen Die meisten Zeichen können buchstäblich übereinstimmen. Metazeichen haben jedoch eine besondere Bedeutung: | Zeichen | Beschreibung | | :------ | :------------------------------------------------------------------------------------------------------------------------------ | | `.` | Übereinstimmung mit einem einzelnen Zeichen außer einem Zeilenumbruch. | | `^` | Dies entspricht dem Anfang der Zeile. | | `$` | Dies entspricht dem Ende der Zeile. | | `*` | Dies entspricht null oder mehr Vorkommen des vorhergehenden Zeichens. | | `+` | Dies entspricht einem oder mehreren Vorkommen des vorhergehenden Zeichens. | | `?` | Dies entspricht null oder einem Vorkommen des vorhergehenden Zeichens. | | `[...]` | Dies entspricht einem einzelnen Zeichen, das in den Klammern enthalten ist. | | `[^...]`| Dies entspricht einem einzelnen Zeichen, das nicht in den Klammern enthalten ist. | | `\ ` | Dient zum Escapen von Metazeichen oder zum Angeben einer Sonderfolge. | | `(...)` | Erstellt eine Erfassungsgruppe. | | `|` | Wirkt wie ein ODER-Operator, der es ermöglicht, entweder den Ausdruck vor oder nach dem Symbol abzugleichen. | ## Beispiele | Ausdruck | Beschreibung | | :------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `.` | Entspricht einem einzelnen Zeichen, außer einem Zeilenumbruch. Zum Beispiel entspricht `.ar` jeder Zeichenkette, die mit einem beliebigen Zeichen beginnt, gefolgt von 'ar'. | | `^` | Entspricht dem Anfang der Zeile. Zum Beispiel entspricht `^a` jeder Zeichenkette, die mit 'a' beginnt. | | `$` | Entspricht dem Ende der Zeile. Zum Beispiel entspricht `a$` jeder Zeichenkette, die mit 'a' endet. | | `*` | Entspricht null oder mehr Vorkommen des vorhergehenden Zeichens. Zum Beispiel entspricht `sa*m` jeder Zeichenkette, die mit 's' beginnt, gefolgt von null oder mehr 'a'-Zeichen, gefolgt von 'm'. | | `+` | Entspricht einem oder mehreren Vorkommen des vorhergehenden Zeichens. Zum Beispiel entspricht `sa+m` jeder Zeichenkette, die mit 's' beginnt, gefolgt von einem oder mehreren 'a'-Zeichen, gefolgt von 'm'. | | `?` | Entspricht null oder einem Vorkommen des vorhergehenden Zeichens. Zum Beispiel entspricht `sa?m` jeder Zeichenkette, die mit 's' beginnt, gefolgt von null oder einem 'a'-Zeichen, gefolgt von 'm'. | | `[abc]` | Entspricht einem einzelnen Zeichen, das in den Klammern enthalten ist. Zum Beispiel entspricht `[abc]` entweder 'a', 'b' oder 'c'. | | `[^abc]` | Entspricht einem einzelnen Zeichen, das nicht in den Klammern enthalten ist. Zum Beispiel entspricht `[^abc]` jedem Zeichen außer 'a', 'b' und 'c'. | | `[a-z]` | Entspricht einem einzelnen Zeichen, das im Bereich von 'a' bis 'z' liegt. | | `.` | Dient zum Escapen von Metazeichen oder zum Angeben einer Sonderfolge. Zum Beispiel entspricht `\d` einer Ziffer. | | `(abc)` | Erstellt eine Erfassungsgruppe. Zum Beispiel erfasst `(abc)` die Zeichenkette 'abc'. | | `(a\|b)` | Entspricht entweder 'a' oder 'b'. | | `(a\|b)*c` | Entspricht einer Zeichenkette, die mit null oder mehr Vorkommen von 'a' oder 'b' beginnt, gefolgt von 'c'. | | `\d` | Entspricht einer Ziffer (0-9). | | `\D` | Entspricht einem Nicht-Ziffer-Zeichen. | | `\w` | Entspricht einem Wortzeichen (a-z, A-Z, 0-9 und \_). | | `\W` | Entspricht einem Nicht-Wort-Zeichen. | | `\s` | Entspricht einem Leerzeichen (Leerzeichen, Tabulator, Zeilenumbruch usw.). | | `\S` | Entspricht einem Nicht-Leerzeichen. | | `{n}` | Entspricht genau n Vorkommen des vorhergehenden Zeichens. Zum Beispiel entspricht `a{3}` genau drei Vorkommen von 'a'. | | `{n,}` | Entspricht n oder mehr Vorkommen des vorhergehenden Zeichens. Zum Beispiel entspricht `a{3,}` drei oder mehr Vorkommen von 'a'. | | `{n,m}` | Entspricht mindestens n und höchstens m Vorkommen des vorhergehenden Zeichens. Zum Beispiel entspricht `a{3,5}` mindestens drei und höchstens fünf Vorkommen von 'a'. | | `\(` oder `\)` | Entspricht einer öffnenden oder schließenden Klammer. | | `\[` oder `\]` | Entspricht einer öffnenden oder schließenden eckigen Klammer. | | `\{` oder `\}` | Entspricht einer öffnenden oder schließenden geschweiften Klammer. | | `\|` | Entspricht dem Pipe-Zeichen. | ## Erweiterte reguläre Ausdrücke Einige Tools verwenden erweiterte reguläre Ausdrücke (EREs), die zusätzliche Metazeichen enthalten: | Zeichen | Beschreibung | | :------ | :------------------------------------------------------------------------------------------------------- | | `+` | Entspricht einem oder mehreren Vorkommen des vorhergehenden Zeichens. | | `?` | Entspricht null oder einem Vorkommen des vorhergehenden Zeichens. | | `|` | Wirkt wie ein ODER-Operator, der es ermöglicht, den Ausdruck entweder vor oder nach dem Symbol abzugleichen. | | `(...)` | Erstellt eine Erfassungsgruppe. | Diese Metazeichen sind in grundlegenden regulären Ausdrücken (BREs) nicht verfügbar. ## Regex in der Programmierung Viele Programmiersprachen bieten Unterstützung für reguläre Ausdrücke. Die spezifische Syntax und Funktionalität von Regex-Engines kann zwischen den Sprachen variieren, aber die grundlegenden Konzepte bleiben konsistent. Hier sind einige Beispiele, wie Regex in verschiedenen Programmiersprachen verwendet werden kann: **Python** ```python import re pattern = r"Hallo Welt" text = "Hallo Welt ist ein beliebtes Programm." match = re.search(pattern, text) if match: print("Muster gefunden:", match.group()) else: print("Muster nicht gefunden.") ``` **JavaScript** ```javascript const pattern = /Hallo Welt/; const text = "Hallo Welt ist ein beliebtes Programm."; const match = text.match(pattern); if (match) { console.log("Muster gefunden:", match); } else { console.log("Muster nicht gefunden."); } ``` **Java** ```java import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String pattern = "Hallo Welt"; String text = "Hallo Welt ist ein beliebtes Programm."; Pattern regex = Pattern.compile(pattern); Matcher matcher = regex.matcher(text); if (matcher.find()) { System.out.println("Muster gefunden: " + matcher.group()); } else { System.out.println("Muster nicht gefunden."); } } } ``` ## Zusammenfassung Reguläre Ausdrücke sind ein leistungsstarkes Werkzeug zum Abgleichen von Mustern in Text. Sie werden in einer Vielzahl von Anwendungen verwendet, darunter Texteditoren, Programmiersprachen und Befehlszeilen-Dienstprogramme. Das Verständnis der Grundlagen von regulären Ausdrücken kann Ihnen helfen, Text effektiver zu verarbeiten und zu bearbeiten.