Regex-Syntax und Grundlegende Muster
Swipe um das Menü anzuzeigen
Regex-Syntax: Bausteine
Reguläre Ausdrücke, oder Regex, werden aus einer Kombination von Literalen, Metazeichen, Zeichenklassen und Quantifizierern aufgebaut. Das Verständnis dieser Komponenten ist entscheidend für das Schreiben effektiver Muster.
- Literale sind gewöhnliche Zeichen, die sich selbst entsprechen. Zum Beispiel entspricht das Muster
"cat"genau dem String"cat"; - Metazeichen sind spezielle Symbole mit einzigartigen Bedeutungen in Regex. Die gebräuchlichsten Metazeichen sind:
.(Punkt): entspricht jedem einzelnen Zeichen außer einem Zeilenumbruch;^: entspricht dem Anfang eines Strings;$: entspricht dem Ende eines Strings;*: entspricht null oder mehr Vorkommen des vorherigen Elements;+: entspricht einem oder mehr Vorkommen des vorherigen Elements;?: entspricht null oder einem Vorkommen des vorherigen Elements.
- Zeichenklassen ermöglichen das Abgleichen eines beliebigen Zeichens aus einer Zeichenmenge. Zum Beispiel entspricht
[abc]"a","b"oder"c", und[0-9]entspricht jeder Ziffer von 0 bis 9.
Nützliche buchstabenbasierte Metazeichen und Quantifizierer
\w: entspricht jedem Wortzeichen (äquivalent zu[a-zA-Z0-9_]). Dies kann für einzelne Buchstaben, Ziffern oder Unterstriche verwendet werden;\W: entspricht jedem Nicht-Wortzeichen (alles, was nicht durch\wabgedeckt ist);\d: entspricht jeder Ziffer (äquivalent zu[0-9]);\D: entspricht jedem Nicht-Ziffern-Zeichen;\b: entspricht einer Wortgrenze (die Position zwischen einem Wortzeichen und einem Nicht-Wortzeichen). Dies kann verwendet werden, um ganze Wörter abzugleichen;\B: entspricht einer Position nicht an einer Wortgrenze.
Quantifizierer
Quantifizierer geben an, wie oft das vorherige Element vorkommen muss:
*: entspricht null oder mehr Mal; zum Beispiel entspricht\w*jeder Sequenz von Wortzeichen, einschließlich eines leeren Strings;+: entspricht einmal oder mehr; zum Beispiel entspricht\w+einer oder mehreren aufeinanderfolgenden Wortzeichen (wie ein Wort);?: entspricht null oder einmal; zum Beispiel entspricht\w?null oder einem Wortzeichen;{n}: entspricht genau n Mal; zum Beispiel entspricht\w{3}genau drei aufeinanderfolgenden Wortzeichen;{n,}: entspricht n oder mehr Mal; zum Beispiel entspricht\w{2,}zwei oder mehr Wortzeichen;{n,m}: entspricht zwischen n und m Mal; zum Beispiel entspricht\w{2,5}zwei bis fünf aufeinanderfolgenden Wortzeichen.
Beispiele in Python
re.findall(r"\w+", "Regex123 is fun!")gibt alle Wörter zurück:["Regex123", "is", "fun"];re.findall(r"\bcat\b", "The cat scattered the catalog.")findet nur das eigenständige Wort"cat";re.findall(r"\w{5}", "apple banana kiwi")findet alle Sequenzen von genau fünf Wortzeichen:["apple", "banan"].
Diese Metazeichen und Quantifizierer sind unerlässlich, um Buchstaben, Wörter und wortähnliche Muster im Text mit der Python-re-Bibliothek abzugleichen.
123456789101112131415import re text = "User123, admin42, guestX" # Find all digits digits = re.findall(r"[0-9]", text) print("Digits found:", digits) # Find all lowercase letters lowercase_letters = re.findall(r"[a-z]", text) print("Lowercase letters found:", lowercase_letters) # Find all uppercase letters uppercase_letters = re.findall(r"[A-Z]", text) print("Uppercase letters found:", uppercase_letters)
In diesem Beispiel wird die Funktion re.findall() verwendet, um nach Übereinstimmungen im String "User123, admin42, guestX" zu suchen. Das Muster [0-9] entspricht jeder Ziffer zwischen 0 und 9 und findet somit alle einzelnen Ziffern im Text. Das Muster [a-z] entspricht jedem Kleinbuchstaben von "a" bis "z", und [A-Z] entspricht jedem Großbuchstaben von "A" bis "Z". Jede Zeichenklasse ist in eckige Klammern eingeschlossen und gibt den Bereich oder die Menge der zu vergleichenden Zeichen an. Diese Muster sind grundlegend, um bestimmte Zeichentypen aus Text zu extrahieren.
123456789101112131415161718192021222324252627import re text = "Hello_123 world! Regex is fun." # \w matches any word character (alphanumeric or underscore) word_chars = re.findall(r"\w", text) print("Word characters (\\w):", word_chars) # \W matches any non-word character non_word_chars = re.findall(r"\W", text) print("Non-word characters (\\W):", non_word_chars) # \b matches word boundaries words = re.findall(r"\b\w+\b", text) print("Words using word boundaries (\\b):", words) # * quantifier: zero or more word characters after 'o' pattern_star = re.findall(r"o\w*", text) print("'o' followed by zero or more word characters (o\\w*):", pattern_star) # + quantifier: one or more word characters after 'R' pattern_plus = re.findall(r"R\w+", text) print("'R' followed by one or more word characters (R\\w+):", pattern_plus) # ? quantifier: 'l' optionally followed by 'e' pattern_question = re.findall(r"le?", text) print("'l' optionally followed by 'e' (le?):", pattern_question)
Hier wird gezeigt, wie die Python-Funktion re.findall() mit verschiedenen Regex-Mustern verwendet wird, um Informationen aus dem String "Hello_123 world! Regex is fun." zu extrahieren. Die Bedeutung der einzelnen Muster:
-
\w: Das Musterr"\w"entspricht jedem Wortzeichen, also Buchstaben (Groß- und Kleinbuchstaben), Ziffern und dem Unterstrich (_). Im angegebenen String werden so alle einzelnen Wortzeichen gefunden, wie'H','e','l','o','1','2','3'usw. -
\W: Das Musterr"\W"entspricht jedem Nicht-Wortzeichen. Dazu zählen Leerzeichen, Satzzeichen und Symbole, die keine Buchstaben, Ziffern oder Unterstriche sind. Im String werden so Zeichen wie Leerzeichen, das Ausrufezeichen (!) und der Punkt (.) gefunden. -
\b: Das Musterr"\b\w+\b"verwendet Wortgrenzen (\b), um vollständige Wörter zu erfassen.\w+steht für eine oder mehrere Wortzeichen, sodass ganze Wörter wie'Hello_123','world','Regex','is'und'fun'als einzelne Elemente extrahiert werden. -
*Quantifizierer: Das Musterr"o\w*"entspricht dem Zeichen'o'gefolgt von null oder mehr Wortzeichen. Das bedeutet, es wird sowohl'o'allein als auch eine Sequenz, die mit'o'beginnt und mit beliebigen folgenden Wortzeichen fortgesetzt wird, erfasst. Im String werden so'o_123'(aus'Hello_123') und'orld'(aus'world') gefunden. -
+Quantifizierer: Das Musterr"R\w+"entspricht dem Zeichen'R'gefolgt von einem oder mehr Wortzeichen. Dies ist nützlich, um Wörter zu finden, die mit'R'beginnen und mit weiteren Wortzeichen fortgesetzt werden. Im String wird so'Regex'gefunden. -
?Quantifizierer: Das Musterr"le?"entspricht dem Buchstaben'l', optional gefolgt von'e'. Der Quantifizierer?bedeutet, dass das vorherige Zeichen ('e') null oder einmal vorkommen kann. Dieses Muster findet sowohl'l'als auch'le', wo immer sie im String auftreten.
Jedes dieser Muster verdeutlicht ein zentrales Merkmal von regulären Ausdrücken – das Erkennen bestimmter Zeichentypen, Grenzen und Wiederholungen – und erleichtert so das Extrahieren oder Analysieren von Informationen aus Texten in Python.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Regex-Syntax und Grundlegende Muster
Regex-Syntax: Bausteine
Reguläre Ausdrücke, oder Regex, werden aus einer Kombination von Literalen, Metazeichen, Zeichenklassen und Quantifizierern aufgebaut. Das Verständnis dieser Komponenten ist entscheidend für das Schreiben effektiver Muster.
- Literale sind gewöhnliche Zeichen, die sich selbst entsprechen. Zum Beispiel entspricht das Muster
"cat"genau dem String"cat"; - Metazeichen sind spezielle Symbole mit einzigartigen Bedeutungen in Regex. Die gebräuchlichsten Metazeichen sind:
.(Punkt): entspricht jedem einzelnen Zeichen außer einem Zeilenumbruch;^: entspricht dem Anfang eines Strings;$: entspricht dem Ende eines Strings;*: entspricht null oder mehr Vorkommen des vorherigen Elements;+: entspricht einem oder mehr Vorkommen des vorherigen Elements;?: entspricht null oder einem Vorkommen des vorherigen Elements.
- Zeichenklassen ermöglichen das Abgleichen eines beliebigen Zeichens aus einer Zeichenmenge. Zum Beispiel entspricht
[abc]"a","b"oder"c", und[0-9]entspricht jeder Ziffer von 0 bis 9.
Nützliche buchstabenbasierte Metazeichen und Quantifizierer
\w: entspricht jedem Wortzeichen (äquivalent zu[a-zA-Z0-9_]). Dies kann für einzelne Buchstaben, Ziffern oder Unterstriche verwendet werden;\W: entspricht jedem Nicht-Wortzeichen (alles, was nicht durch\wabgedeckt ist);\d: entspricht jeder Ziffer (äquivalent zu[0-9]);\D: entspricht jedem Nicht-Ziffern-Zeichen;\b: entspricht einer Wortgrenze (die Position zwischen einem Wortzeichen und einem Nicht-Wortzeichen). Dies kann verwendet werden, um ganze Wörter abzugleichen;\B: entspricht einer Position nicht an einer Wortgrenze.
Quantifizierer
Quantifizierer geben an, wie oft das vorherige Element vorkommen muss:
*: entspricht null oder mehr Mal; zum Beispiel entspricht\w*jeder Sequenz von Wortzeichen, einschließlich eines leeren Strings;+: entspricht einmal oder mehr; zum Beispiel entspricht\w+einer oder mehreren aufeinanderfolgenden Wortzeichen (wie ein Wort);?: entspricht null oder einmal; zum Beispiel entspricht\w?null oder einem Wortzeichen;{n}: entspricht genau n Mal; zum Beispiel entspricht\w{3}genau drei aufeinanderfolgenden Wortzeichen;{n,}: entspricht n oder mehr Mal; zum Beispiel entspricht\w{2,}zwei oder mehr Wortzeichen;{n,m}: entspricht zwischen n und m Mal; zum Beispiel entspricht\w{2,5}zwei bis fünf aufeinanderfolgenden Wortzeichen.
Beispiele in Python
re.findall(r"\w+", "Regex123 is fun!")gibt alle Wörter zurück:["Regex123", "is", "fun"];re.findall(r"\bcat\b", "The cat scattered the catalog.")findet nur das eigenständige Wort"cat";re.findall(r"\w{5}", "apple banana kiwi")findet alle Sequenzen von genau fünf Wortzeichen:["apple", "banan"].
Diese Metazeichen und Quantifizierer sind unerlässlich, um Buchstaben, Wörter und wortähnliche Muster im Text mit der Python-re-Bibliothek abzugleichen.
123456789101112131415import re text = "User123, admin42, guestX" # Find all digits digits = re.findall(r"[0-9]", text) print("Digits found:", digits) # Find all lowercase letters lowercase_letters = re.findall(r"[a-z]", text) print("Lowercase letters found:", lowercase_letters) # Find all uppercase letters uppercase_letters = re.findall(r"[A-Z]", text) print("Uppercase letters found:", uppercase_letters)
In diesem Beispiel wird die Funktion re.findall() verwendet, um nach Übereinstimmungen im String "User123, admin42, guestX" zu suchen. Das Muster [0-9] entspricht jeder Ziffer zwischen 0 und 9 und findet somit alle einzelnen Ziffern im Text. Das Muster [a-z] entspricht jedem Kleinbuchstaben von "a" bis "z", und [A-Z] entspricht jedem Großbuchstaben von "A" bis "Z". Jede Zeichenklasse ist in eckige Klammern eingeschlossen und gibt den Bereich oder die Menge der zu vergleichenden Zeichen an. Diese Muster sind grundlegend, um bestimmte Zeichentypen aus Text zu extrahieren.
123456789101112131415161718192021222324252627import re text = "Hello_123 world! Regex is fun." # \w matches any word character (alphanumeric or underscore) word_chars = re.findall(r"\w", text) print("Word characters (\\w):", word_chars) # \W matches any non-word character non_word_chars = re.findall(r"\W", text) print("Non-word characters (\\W):", non_word_chars) # \b matches word boundaries words = re.findall(r"\b\w+\b", text) print("Words using word boundaries (\\b):", words) # * quantifier: zero or more word characters after 'o' pattern_star = re.findall(r"o\w*", text) print("'o' followed by zero or more word characters (o\\w*):", pattern_star) # + quantifier: one or more word characters after 'R' pattern_plus = re.findall(r"R\w+", text) print("'R' followed by one or more word characters (R\\w+):", pattern_plus) # ? quantifier: 'l' optionally followed by 'e' pattern_question = re.findall(r"le?", text) print("'l' optionally followed by 'e' (le?):", pattern_question)
Hier wird gezeigt, wie die Python-Funktion re.findall() mit verschiedenen Regex-Mustern verwendet wird, um Informationen aus dem String "Hello_123 world! Regex is fun." zu extrahieren. Die Bedeutung der einzelnen Muster:
-
\w: Das Musterr"\w"entspricht jedem Wortzeichen, also Buchstaben (Groß- und Kleinbuchstaben), Ziffern und dem Unterstrich (_). Im angegebenen String werden so alle einzelnen Wortzeichen gefunden, wie'H','e','l','o','1','2','3'usw. -
\W: Das Musterr"\W"entspricht jedem Nicht-Wortzeichen. Dazu zählen Leerzeichen, Satzzeichen und Symbole, die keine Buchstaben, Ziffern oder Unterstriche sind. Im String werden so Zeichen wie Leerzeichen, das Ausrufezeichen (!) und der Punkt (.) gefunden. -
\b: Das Musterr"\b\w+\b"verwendet Wortgrenzen (\b), um vollständige Wörter zu erfassen.\w+steht für eine oder mehrere Wortzeichen, sodass ganze Wörter wie'Hello_123','world','Regex','is'und'fun'als einzelne Elemente extrahiert werden. -
*Quantifizierer: Das Musterr"o\w*"entspricht dem Zeichen'o'gefolgt von null oder mehr Wortzeichen. Das bedeutet, es wird sowohl'o'allein als auch eine Sequenz, die mit'o'beginnt und mit beliebigen folgenden Wortzeichen fortgesetzt wird, erfasst. Im String werden so'o_123'(aus'Hello_123') und'orld'(aus'world') gefunden. -
+Quantifizierer: Das Musterr"R\w+"entspricht dem Zeichen'R'gefolgt von einem oder mehr Wortzeichen. Dies ist nützlich, um Wörter zu finden, die mit'R'beginnen und mit weiteren Wortzeichen fortgesetzt werden. Im String wird so'Regex'gefunden. -
?Quantifizierer: Das Musterr"le?"entspricht dem Buchstaben'l', optional gefolgt von'e'. Der Quantifizierer?bedeutet, dass das vorherige Zeichen ('e') null oder einmal vorkommen kann. Dieses Muster findet sowohl'l'als auch'le', wo immer sie im String auftreten.
Jedes dieser Muster verdeutlicht ein zentrales Merkmal von regulären Ausdrücken – das Erkennen bestimmter Zeichentypen, Grenzen und Wiederholungen – und erleichtert so das Extrahieren oder Analysieren von Informationen aus Texten in Python.
Danke für Ihr Feedback!