Reguläre Ausdrücke gibt es als Konzept nicht nur in Python. Allerdings gibt es noch einige kleinere Unterschiede in der tatsächlichen Verwendung regulärer Ausdrücke in Python.
Dieser Artikel ist Teil einer Artikelserie über reguläre Python-Ausdrücke. In diesem ersten Artikel dieser Reihe konzentrieren wir uns auf die Verwendung regulärer Ausdrücke in Python und beleuchten einige der einzigartigen Funktionen von Python.
Wir stellen einige Methoden zum Suchen und Finden von Zeichenfolgen in Python vor. Anschließend besprechen wir, wie wir mithilfe der Gruppierung die Unterelemente der gefundenen übereinstimmenden Objekte verarbeiten.
Das Modul für reguläre Ausdrücke in Python, das wir verwenden möchten, heißt normalerweise „re“.
1. Primitive Zeichenfolgen in Python
Der Python-Compiler verwendet '' (Backslash), um Zeichenfolgen als Escape-Zeichen in Konstanten darzustellen .
Wenn auf den Backslash eine vom Compiler erkannte Folge von Sonderzeichen folgt, wird die gesamte Escape-Sequenz durch das entsprechende Sonderzeichen ersetzt (z. B. wird „n“ durch ein Zeilenumbruchzeichen ersetzt). der Compiler).
Dies stellt jedoch ein Problem für die Verwendung regulärer Ausdrücke in Python dar, da Backslashes auch im Modul „re“ verwendet werden, um Sonderzeichen in regulären Ausdrücken (wie * und +) zu maskieren.
Eine Mischung aus beidem bedeutet, dass Sie manchmal das Escape-Zeichen selbst maskieren müssen (wenn das Sonderzeichen sowohl von Python als auch vom Compiler für reguläre Ausdrücke erkannt wird), aber manchmal ist dies nicht erforderlich (wenn das Sonderzeichen werden nur vom Python-Compiler erkannt.
Anstatt herauszufinden, wie viele Backslashes benötigt werden, können wir stattdessen rohe Zeichenfolgen verwenden.
Primitive Zeichenfolgen können einfach durch Hinzufügen eines „r“-Zeichens vor den doppelten Anführungszeichen einer gewöhnlichen Zeichenfolge erstellt werden. Wenn eine Zeichenfolge vom primitiven Typ ist, versucht der Python-Compiler keine Ersetzungen. Im Wesentlichen weisen Sie den Compiler an, Ihre Zeichenfolge überhaupt nicht zu beeinträchtigen.
Reguläre Ausdrücke zum Suchen in Python verwenden
Das Modul „re“ bietet mehrere Methoden für Eingabezeichenfolgen. Machen Sie genaue Abfragen. Die Methoden, die wir besprechen werden, sind:
Jede Methode akzeptiert einen regulären Ausdruck und eine abzugleichende Zeichenfolge. Schauen wir uns jede dieser Methoden genauer an, um zu verstehen, wie sie funktionieren und worin sie sich unterscheiden.
2. Verwenden Sie re.match zum Suchen – der Abgleich beginnt
Werfen wir zunächst einen Blick auf die Methode match(). Die Methode match() funktioniert so, dass sie nur dann eine Übereinstimmung findet, wenn der Anfang der durchsuchten Zeichenfolge mit dem Muster übereinstimmt.
Wenn Sie beispielsweise die math()-Methode für die Zeichenfolge „Hund, Katze, Hund“ aufrufen, wird das Suchmuster „Hund“ gefunden:
Wir werden Auf die Methode group() wird später noch näher eingegangen. Im Moment müssen wir nur wissen, dass wir es mit 0 als Argument aufgerufen haben und dass die Methode group() das gefundene passende Muster zurückgibt.
Ich habe auch das zurückgegebene SRE_Match-Objekt vorerst übersprungen, wir werden es bald besprechen.
Wenn wir jedoch die Methode math() für dieselbe Zeichenfolge aufrufen und nach dem Muster „Katze“ suchen, wird keine Übereinstimmung gefunden.
3 Verwenden Sie re.search, um eine beliebige Position zu finden.
Die Methode search() ähnelt match(). , aber die Methode search () beschränkt uns nicht darauf, nur nach einer Übereinstimmung vom Anfang der Zeichenfolge zu suchen. Wenn wir also in unserer Beispielzeichenfolge nach „cat“ suchen, wird eine Übereinstimmung gefunden:
Allerdings stoppt die search()-Methode, wenn sie eine Übereinstimmung findet, sodass die Suche nach „dog“ mit der searc()-Methode in unserer Beispielzeichenfolge nur das erste Vorkommen davon findet.
4. Verwenden Sie re.findall – alle passenden Objekte
Die Suchmethode, die ich bisher in Python am häufigsten verwende, ist die Methode findall(). Wenn wir die Methode findall() aufrufen, können wir einfach eine Liste aller übereinstimmenden Muster abrufen, anstatt das Übereinstimmungsobjekt abzurufen (wir werden das Übereinstimmungsobjekt als Nächstes ausführlicher besprechen). Für mich ist es einfacher. Wenn wir die findall()-Methode für die Beispielzeichenfolge aufrufen, erhalten wir:
5. Verwenden Sie die Methoden match.start und match.end
Was ist also das „match“-Objekt, das uns zuvor von den Methoden search() und match() zurückgegeben wurde?
Im Gegensatz zur einfachen Rückgabe des übereinstimmenden Teils der Zeichenfolge ist das von search() und match() zurückgegebene „übereinstimmende Objekt“ tatsächlich eine Wrapper-Klasse für übereinstimmende Teilzeichenfolgen.
Vorhin haben Sie gesehen, dass ich die passende Teilzeichenfolge erhalten kann, indem ich die Methode group() aufrufe (wie wir im nächsten Abschnitt sehen werden, sind Match-Objekte tatsächlich sehr nützlich, wenn es um Gruppierungsprobleme geht), aber die Übereinstimmung Objekt ist immer noch Enthält weitere Informationen zu übereinstimmenden Teilzeichenfolgen.
Das Match-Objekt kann uns beispielsweise sagen, wo der übereinstimmende Inhalt in der Originalzeichenfolge beginnt und endet:
Die Kenntnis dieser Informationen ist manchmal sehr nützlich.
6. Mit mathch.group nach Zahlen gruppieren
Wie ich bereits erwähnt habe, sind Match-Objekte sehr praktisch für die Handhabung von Gruppierungen.
Gruppierung ist die Fähigkeit, bestimmte Teilzeichenfolgen eines gesamten regulären Ausdrucks zu finden. Wir können eine Gruppe als Teil des gesamten regulären Ausdrucks definieren und dann den übereinstimmenden Inhalt dieses Teils separat suchen.
Mal sehen, wie es funktioniert:
Die Zeichenfolge, die ich gerade erstellt habe, sieht aus wie eine Zeichenfolge aus dem Adressbuch von jemandem. Ein Fragment. Wir können diese Zeile mit einem regulären Ausdruck abgleichen:
indem wir den regulären Ausdruck in Klammern setzen (die Zeichen „(“ und „)“). Wir können Inhalte gruppieren in bestimmte Abschnitte aufteilen und diese Untergruppen dann einzeln bearbeiten.
Diese Gruppen können mithilfe der group()-Methode des Gruppenobjekts abgerufen werden. Sie können anhand der numerischen Reihenfolge gefunden werden, in der sie im regulären Ausdruck von links nach rechts erscheinen (beginnend bei 1):
Der Grund, bei dem die Ordnungszahlen der Gruppen beginnen 1 liegt daran, dass die 0. Gruppe zum Speichern aller übereinstimmenden Objekte reserviert ist (wir haben es gesehen, als wir zuvor die Methoden match() und search() studiert haben).
7. Verwenden Sie match.group, um nach Alias zu gruppieren.
Manchmal, insbesondere wenn ein regulärer Ausdruck viele Gruppen hat, erfolgt die Positionierung nach der Reihenfolge von Das Aussehen wird unrealistisch. Mit Python können Sie auch einen Gruppennamen über die folgende Anweisung angeben:
Wir können immer noch die Methode group() verwenden, um den Inhalt der Gruppe abzurufen, aber dieses Mal tun wir es müssen verwenden, was wir haben. Geben Sie den Gruppennamen anstelle der zuvor verwendeten Anzahl von Gruppen an.
Dies verbessert die Klarheit und Lesbarkeit des Codes erheblich. Sie können sich vorstellen, dass es mit zunehmender Komplexität regulärer Ausdrücke immer schwieriger wird, zu verstehen, was eine Gruppe erfasst. Durch die Benennung Ihrer Gruppen werden Sie und Ihre Leser Ihre Absicht deutlich erkennen.
Obwohl die Methode findall() kein gruppiertes Objekt zurückgibt, kann sie auch eine Gruppierung verwenden. In ähnlicher Weise gibt die Methode findall() eine Sammlung von Tupeln zurück, wobei das N-te Element in jedem Tupel der N-ten Gruppierung im regulären Ausdruck entspricht.
Die Benennung der Gruppe gilt jedoch nicht für die Methode findall().
In diesem Artikel haben wir einige Grundlagen der Verwendung regulärer Ausdrücke in Python vorgestellt. Wir haben etwas über den primitiven String-Typ gelernt (und wie er Ihnen helfen kann, einige der Probleme bei der Verwendung regulärer Ausdrücke zu lösen). Wir haben auch gelernt, wie man die Methoden match(), search() und findall() verwendet, um grundlegende Abfragen durchzuführen, und wie man die Gruppierung verwendet, um Unterkomponenten übereinstimmender Objekte zu verarbeiten.
Wenn Sie mehr zu diesem Thema erfahren möchten, ist wie immer die offizielle Python-Dokumentation für das re-Modul eine großartige Ressource.
In zukünftigen Artikeln werden wir die Anwendung regulärer Ausdrücke in Python ausführlicher besprechen. Wir werfen einen umfassenderen Blick auf Match-Objekte, lernen, wie man sie zum Durchführen von Ersetzungen innerhalb von Strings verwendet und wie man sie sogar zum Parsen von Python-Datenstrukturen aus Textdateien verwendet.
Das obige ist der detaillierte Inhalt vonSieben Beispiele für die Verwendung regulärer Python-Ausdrücke. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!