Der Anfängerleitfaden zu regulären Ausdrücken mit Python

Der Anfängerleitfaden zu regulären Ausdrücken mit Python

Wenn Sie Programmierer sind, wissen Sie wahrscheinlich bereits, was reguläre Ausdrücke (regex) sind. Regex-Muster wurden in fast allen gängigen Programmiersprachen implementiert, aber die Leistungsfähigkeit und Vielseitigkeit dieser Muster wird von den meisten Entwicklern nicht erkannt.





In diesem Handbuch dreht sich alles um reguläre Ausdrücke und wie Sie sie in der Programmiersprache Python verwenden können.





Was sind reguläre Ausdrücke?

Reguläre Ausdrücke sind Muster, die einem Benutzer helfen, Zeichenkombinationen in Textdateien und Zeichenfolgen zu finden. Sie können reguläre Ausdrücke verwenden, um ein bestimmtes Muster in der Ausgabe eines Befehls oder eines Dokuments zu filtern oder zu finden.





Es gibt verschiedene Anwendungsfälle für reguläre Ausdrücke, der bekannteste ist der grep-Befehl unter Linux . Andere Anwendungen umfassen Informationsfilterung wie das Extrahieren von E-Mail-Adressen und Telefonnummern aus einem Datendump.

Der Hauptgrund, warum viele Entwickler von regulären Ausdrücken abweichen, ist das mangelnde Bewusstsein für die Leistungsfähigkeit des Mustervergleichs. Einige finden reguläre Ausdrücke sogar verwirrend, da in den Mustern viele Zeichen und Sequenzen verwendet werden.



Was auch immer der Grund sein mag, reguläre Ausdrücke sind und bleiben einer der wichtigsten Aspekte der Programmierung, die jeder kennen sollte.

Xbox One kann keine WLAN-Verbindung herstellen

Reguläre Ausdrücke: Übereinstimmende Zeichen und Sequenzen

Regex ist eine ganz neue Sprache für sich. Eine Regex-Engine interpretiert Muster, die aus mehreren Zeichen bestehen, die mit bestimmten Bedeutungen ausgestattet sind. Grundliterale wie alphanumerische Zeichen stimmen mit sich selbst überein. Komplexe Zeichen wie $, *, +, { usw. helfen jedoch beim Abgleich höherer Ordnung.





  1. Stern (*): Entspricht dem vorhergehenden Zeichen null- oder mehrmals. Die wörtliche Bedeutung des Zeichens wäre 'Element n mal multipliziert'. Wenn der reguläre Ausdruck beispielsweise ist abc * , sind die übereinstimmenden Zeichenfolgen ab, abc, abcc, abccc, abcccc usw. Der Ausdruck [bc]* entspricht bc, bcbc, bcbc usw.
  2. Mehr (+): Stimmt ein- oder mehrmals mit dem vorhergehenden Zeichen überein. Die Arbeit der + Charakter ist ähnlich zu * , aber die + Zeichen lässt das Muster weg, wenn das Zeichen nicht auftritt. Zum Beispiel, abc + stimmt mit abc, abcc, abccc usw. überein, aber nicht mit ab.
  3. Fragezeichen (?): Entspricht dem vorhergehenden Zeichen null oder einmal. Zum Beispiel das Muster ABC? stimmt nur ab und abc überein.
  4. Rohr (|): Wird als Binärdatei verwendet ODER Operator. Entspricht einem der Zeichen vor und nach der Pipe. Zum Beispiel, a|b entspricht entweder a oder b.
  5. Punkt (.): Entspricht einem Charakter, dessen Identität unbekannt ist. Zum Beispiel, a.c entspricht aac, abc, acc, a2c usw.
  6. Karotte (^): Entspricht dem ersten Zeichen im Muster. Zum Beispiel, ^Ra findet Wörter, die mit beginnen aus wie Kaninchen, Waschbär und Zufall.
  7. Dollar ($): Entspricht dem letzten Zeichen im Muster. Zum Beispiel, ein$ passt Wörter mit der Endung ein wie Van, Dan und Plan.
  8. Bindestrich (-): Wird verwendet, um einen Zeichenbereich zu definieren. Zum Beispiel, [0-9] entspricht allen einstelligen numerischen Zeichen.

Spezielle Sequenzen, die in Mustern für reguläre Ausdrücke verwendet werden, sind:

  1. U: Gibt eine Übereinstimmung zurück, wenn die folgenden Zeichen am Anfang der Zeichenfolge vorhanden sind. Zum Beispiel, AThe findet Wörter, die mit dem beginnen Die wie Die, Sie, Sie usw.
  2. B: Gibt eine Übereinstimmung zurück, wenn das Zeichen entweder am Anfang oder am Ende eines Wortes gefunden wird. Zum Beispiel, bmad und verrückt passt zu Wörtern wie gemacht und Nomade bzw.
  3. B: Gibt eine Übereinstimmung zurück, wenn das Zeichen am Anfang oder Ende eines Wortes nicht gefunden wird.
  4. D: Entspricht in der Zeichenfolge vorhandenen numerischen Zeichen. Zum Beispiel, /D* entspricht Zahlen wie 1, 12, 1232 usw.
  5. D: Entspricht nicht numerischen Zeichen in der Zeichenfolge. /D entspricht a, b, c, f usw.
  6. S: Entspricht einem Leerzeichen im Text.
  7. S: Entspricht einem Nicht-Leerzeichen im Text.
  8. in: Gibt eine Übereinstimmung zurück, wenn die Zeichenfolge alphanumerische Zeichen einschließlich Unterstrichen enthält. Zum Beispiel, in entspricht a, b, c, d, 1, 2, 3 usw.
  9. IN: Gibt eine Übereinstimmung zurück, wenn die Zeichenfolge keine alphanumerischen Zeichen oder Unterstriche enthält.
  10. MIT: Entspricht Zeichen am Ende einer Zeichenfolge. Zum Beispiel, Ende passt Wörter mit der Endung Ende wie biegen, flicken, neigen usw.

Python-Methoden für reguläre Ausdrücke

In Python ist das betreffend Die Bibliothek bietet alle notwendigen Funktionen und Dienstprogramme, die zum Implementieren von Regex in Ihren Programmen erforderlich sind. Sie müssen die Bibliothek nicht mit pip herunterladen, da sie mit dem Python-Interpreter vorinstalliert ist.





So importieren Sie die betreffend Bibliothek in Python, fügen Sie Ihrem Skript den folgenden Code hinzu:

import re

Beachten Sie, dass wir bei der Übergabe von regulären Ausdrücken in Python rohe Zeichenfolgen verwenden, da sie Sonderzeichen wie nicht interpretieren und T anders.

Spiel()

Die re.match() -Methode in Python gibt ein Regex-Objekt zurück, wenn das Programm eine Übereinstimmung am Anfang des angegebenen Strings findet. Diese Funktion benötigt zwei grundlegende Argumente:

re.match(pattern, string)

...wo Muster ist der reguläre Ausdruck und Schnur ist der zu durchsuchende Text.

Sehen Sie sich das folgende Code-Snippet an.

import re
match = re.match(r'Word', 'This sentence contains a Word')
print(match)

Die R Zeichen vor dem String steht für Rohstring.

Ausgabe:

None

Der oben genannte Code kehrt zurück Keiner da Wort war am Anfang der Zeichenfolge nicht vorhanden.

Wenn eine Übereinstimmung gefunden wird, können Sie die Übereinstimmung mit der Schaltfläche . ausdrucken Gruppe() -Methode, die zum Regex-Objekt gehört.

import re
match = re.match(r'Word', 'Word is hard to read')
print(match.group(0))

Ausgabe:

Word

Die Forschung () -Methode verwendet ähnliche Argumente wie re.match(). Während match() nur Übereinstimmungen zurückgibt, die am Anfang des Strings vorhanden sind, Suche() gibt Übereinstimmungen zurück, die an jedem Index in der Zeichenfolge gefunden wurden.

import re
match = re.search(r'Word', 'This sentence contains a Word. Word is hard to read.')
print(match.group(0))

Notiere dass der Spiel() und Suche() Methoden geben nur eine Musterübereinstimmung zurück. Im oben genannten Code, Wort erscheint zweimal. Aber die Suche() Funktion findet nur das erste Vorkommen des Wortes.

Word

Finde alle()

Wie Sie bereits ahnen können, ist die finde alle() -Methode gibt jede mögliche Übereinstimmung in der Zeichenfolge zurück.

import re
match = re.search(r'Word', 'This sentence contains a Word. Word is hard to read.')
for elem in match:
print(elem)

Anstatt ein Regex-Objekt zurückzugeben, gibt die Funktion findall() eine Liste aller Übereinstimmungen zurück. Sie können die Liste mit a . durchlaufen for-Schleife in Python .

Teilt()

Wenn Sie eine Zeichenfolge mit einem Muster als Trennzeichen in Teilzeichenfolgen aufteilen möchten, dann Teilt() Funktion ist die, die Sie brauchen.

import re
split = re.split(r'and', 'This word and that and this are different.')
print(split)

Ausgabe:

['This word', 'that', 'this are different.']

Unter()

Die sub() -Methode ermöglicht es einem Benutzer, ein bestimmtes Wort anstelle eines Musters zu ersetzen. Es braucht die folgenden Argumente.

re.sub(pattern, replacement, string)

Betrachten Sie dieses Code-Snippet:

import re
result = re.sub(r'and', 'or', 'Dave and Harry must be punished.')
print(result)

Ausgabe:

Dave or Harry must be punished.

Kompilieren()

Die re.kompilieren() Methode in der betreffend Bibliothek ermöglicht es einem Benutzer, eine kompilierte Version des Musters für reguläre Ausdrücke im Speicher zu speichern. Dann kann der Benutzer unter Verwendung des kompilierten Objekts den angegebenen Textdump schnell nach übereinstimmenden Mustern filtern.

import re
pattern = re.compile('Python')
match = pattern.findall('Python is a great language for writing scripts. Python is easy to learn.')
print(match)

Diese Funktion wird hauptsächlich zum Speichern von Mustern verwendet, die ressourcenintensiv sind und viel Zeit zum Ausführen benötigen. Das vorherige Kompilieren und Speichern des Musters als Objekt löst dieses Problem.

Nutzen Sie die Leistungsfähigkeit von Regex mit Python

Wenn Sie mit Textdateien und Ausgaben arbeiten, ist Regex ein großartiges Werkzeug, das Sie zur Verfügung haben. Sie können schnell Code schreiben, um bestimmte Muster im Dokument zu filtern oder zu ersetzen.

Es kann schwierig sein, sich alle Zeichen und passenden Sequenzen zu merken, wenn Sie gerade erst mit Regex beginnen. Um mit regulären Ausdrücken besser zu werden, wird es Ihnen auf lange Sicht sicherlich helfen, sich hin und wieder auf eine Liste von Zeichen, Methoden und Sequenzen zu beziehen.

Teilen Teilen Tweet Email Der Python RegEx-Spickzettel für angehende Programmierer

Verwenden Sie diese Liste regulärer Python-Ausdrücke, damit Sie diese vielseitige Programmiersprache besser verwenden können.

Weiter lesen
Verwandte Themen
  • Programmierung
  • Programmierung
  • Python
Über den Autor Deepesh Sharma(79 Artikel veröffentlicht)

Deepesh ist Junior Editor für Linux bei MUO. Er schreibt Informationshandbücher zu Linux mit dem Ziel, allen Neulingen eine glückselige Erfahrung zu bieten. Bei Filmen bin ich mir nicht sicher, aber wenn du über Technologie reden willst, ist er dein Typ. In seiner Freizeit findet man ihn beim Lesen von Büchern, beim Hören verschiedener Musikgenres oder beim Gitarrespielen.

Mehr von Deepesh Sharma

Abonniere unseren Newsletter

Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!

Klicken Sie hier, um zu abonnieren