Dieses Modul bietet Vergleichsoperationen für reguläre Ausdrücke ähnlich wie Perl. Dasselbe gilt auch für Unicode-Strings.
Reguläre Ausdrücke verwenden einen Backslash „ “ zur Darstellung spezieller Formen oder als Escape-Zeichen, was im Widerspruch zur Python-Syntax steht. Daher verwendet Python „ \\ “ zur Darstellung regulärer Ausdrücke „ “, denn wenn Sie möchten Wenn Sie im regulären Ausdruck mit „ „ übereinstimmen, müssen Sie es maskieren und in „ \ „ ändern. In der Python-Syntax müssen Sie jedes Element in der Zeichenfolge maskieren, damit es zu „ \\ “ wird.
Finden Sie die obige Schreibmethode problematisch? Um reguläre Ausdrücke besser lesbar zu machen, muss ich Sie daran erinnern, dass beim Schreiben von Dateipfaden keine Rohzeichenfolgen verwendet werden , hier gibt es Fallstricke. Die Rohzeichenfolge verwendet „r“ als Präfix der Zeichenfolge, z. B. „r“n“: Sie stellt zwei Zeichen „“ und „n“ anstelle eines Zeilenumbruchzeichens dar. Diese Form wird beim Schreiben regulärer Ausdrücke in Python empfohlen.
Die meisten regulären Ausdrucksoperationen können denselben Zweck erfüllen wie Funktionen auf Modulebene oder RegexObject-Methoden. Sie müssen das reguläre Ausdrucksobjekt nicht von Anfang an kompilieren, können jedoch einige praktische Feinabstimmungsparameter nicht verwenden.
1. Syntax für reguläre Ausdrücke
Aus Platzgründen wird sie hier nicht beschrieben.
2. Der Unterschied zwischen Marsch und Suche
Python bietet zwei verschiedene primitive Operationen: Übereinstimmung und Suche. Die Übereinstimmung beginnt am Anfangspunkt der Zeichenfolge, während die Suche (Perl-Standard) jede Übereinstimmung mit der Zeichenfolge beginnt.
Hinweis: Wenn der reguläre Ausdruck mit „^“ beginnt, sind Übereinstimmung und Suche identisch. Die Übereinstimmung ist nur dann erfolgreich, wenn die übereinstimmende Zeichenfolge von Anfang an abgeglichen werden kann oder ab der Position des pos-Parameters abgeglichen werden kann. Wie folgt:
>>> import re
>>> re.match("c", "abcdef")
>>> re .search("c", "abcdef")
<_sre.SRE_Match Objekt bei 0x00A9A988>
>>> re.match("c", "cabcdef")
< _sre .SRE_Match-Objekt bei 0x00A9AB80>
>>> re.search("c","cabcdef")
<_sre.SRE_Match-Objekt bei 0x00AF1720>
>>> = re.compile("c")
>>> patterm.match("abcdef")
>>> > ;> patterm.match("abcdef",2)
<_sre.SRE_Match Objekt bei 0x00A9AB80>
3. Modulinhalt
result = prog.match(string)
re.search(pattern, string, flags=0)
re.match(pattern, string, flags=0)
re.split(pattern, string, maxsplit=0)
['Wörter', 'Wörter', 'Wörter', '' ]
>>> re.split('(W+)', 'Wörter, Wörter, Wörter.')
['Wörter', ', ', 'Wörter', ', ', ' Wörter', '.', '']
>>> re.split('W+', 'Wörter, Wörter, Wörter.', 1)
['Wörter', 'Wörter, Wörter .']
>>> re.split('[a-f]+', '0a3B9', flags=re.IGNORECASE)
>>> re.split('(W+)', '...Wörter, Wörter...')
['', '...', 'Wörter', ', ', 'words', '...', '']
Wenn die Zeichenfolge nicht übereinstimmen kann, wird eine Liste der gesamten Zeichenfolge zurückgegeben.
>>> re.split("a",bbb")
['bbb']
re.findall (Muster, Zeichenfolge, Flags = 0)
Suchen Sie alle mit RE übereinstimmenden Teilzeichenfolgen und geben Sie sie als Liste zurück. Die Übereinstimmungen werden in der Reihenfolge von links nach rechts zurückgegeben. Wenn es keine Übereinstimmung gibt, wird eine leere Liste zurückgegeben.
>>> re.findall("a","bcdef")
[]
>>> (r"d+","12a32bc43jf3")
['12', '32', '43', '3']
re.finditer(pattern, string, flags=0 )
Suchen Sie alle mit RE übereinstimmenden Teilzeichenfolgen und geben Sie sie als Iterator zurück. Die Übereinstimmungen werden in der Reihenfolge von links nach rechts zurückgegeben. Wenn es keine Übereinstimmung gibt, wird eine leere Liste zurückgegeben.
>>> it = re.finditer(r"d+","12a32bc43jf3")
>>> group()
4. Reguläres Ausdrucksobjekt
start() gibt die Position zurück, an der die Übereinstimmung beginnt
end() gibt die Position zurück, an der die Übereinstimmung endet
span() gibt zurück a Das Tupel enthält die Position der Übereinstimmung (Anfang, Ende)
5. Kompilierungsflags
Die Kompilierung Mit dem Flag können Sie einige Operationen regulärer Ausdrücke ändern. Im re-Modul kann das Flag zwei Namen verwenden, einer ist der vollständige Name, z. B. IGNORECASE, und der andere ist die Abkürzung in Ein-Buchstaben-Form, z. B. I. (Wenn Sie mit der Modusänderung von Perl vertraut sind, verwenden die Ein-Buchstaben-Formulare denselben Buchstaben; die Abkürzung für re.VERBOSE lautet beispielsweise re.X.) Mehrere Flags können durch bitweise ODER-Verknüpfung angegeben werden. Beispielsweise ist re.I |. re.M auf die Flags I und M gesetzt:
IGNORECASE
macht die passende Groß-/Kleinschreibung -sensitive Unempfindlich; Zeichenklassen und Zeichenfolgen ignorieren die Groß-/Kleinschreibung bei der Zuordnung von Buchstaben. Beispielsweise kann [A-Z] auch mit Kleinbuchstaben übereinstimmen, und „Spam“ kann mit „Spam“, „spam“ oder „spAM“ übereinstimmen. Dieser Kleinbuchstabe berücksichtigt nicht die aktuelle Position.
LOCALE
Wirkt sich auf „w“, „W“, „b“ und „B“ aus, abhängig von der aktuellen Lokalisierungseinstellung .
locales ist eine Funktion in der C-Sprachbibliothek, die zur Unterstützung bei der Programmierung verwendet wird, die verschiedene Sprachen berücksichtigen muss. Wenn Sie beispielsweise mit französischem Text arbeiten, möchten Sie „w+“ verwenden, um Text abzugleichen, „w“ stimmt jedoch nur mit der Zeichenklasse [A-Za-z] überein, es stimmt jedoch nicht mit „é“ oder „?“ überein. . Wenn Ihr System entsprechend konfiguriert ist und das Gebietsschema auf Französisch eingestellt ist, teilt eine interne C-Funktion dem Programm mit, dass „é“ auch als Buchstabe betrachtet werden soll. Die Verwendung des LOCALE-Flags beim Kompilieren eines regulären Ausdrucks führt zu einem kompilierten Objekt, das diese C-Funktionen zur Verarbeitung von „w“ verwendet. Dies ist zwar langsamer, ermöglicht Ihnen aber dennoch die Verwendung von „w+“, um französischen Text abzugleichen, wie Sie möchten.
MULTILINE
(^ und $ werden zu diesem Zeitpunkt nicht interpretiert; sie werden in Abschnitt 4.1 eingeführt.)
Verwenden Sie „^“, um nur den Anfang der Zeichenfolge abzugleichen, während $ nur das Ende der Zeichenfolge und das Ende der Zeichenfolge unmittelbar vor einer neuen Zeile (falls vorhanden) abgleicht. Wenn dieses Flag angegeben ist, stimmt „^“ mit dem Anfang der Zeichenfolge und dem Anfang jeder Zeile in der Zeichenfolge überein. Ebenso entspricht das Metazeichen $ dem Ende der Zeichenfolge und dem Ende jeder Zeile in der Zeichenfolge (direkt vor jeder neuen Zeile).
DOTALL
stellt sicher, dass das Sonderzeichen „.“ genau mit jedem Zeichen übereinstimmt, einschließlich Zeilenumbrüchen, „. " Entspricht jedem Zeichen außer Newline.
VERBOSE Dieses Flag erleichtert das Verständnis des Schreibens regulärer Ausdrücke, indem es Ihnen ein flexibleres Format bietet. Wenn dieses Flag angegeben ist, werden Leerzeichen innerhalb der RE-Zeichenfolge ignoriert, es sei denn, das Leerzeichen befindet sich innerhalb einer Zeichenklasse oder nach einem Backslash. Dadurch können Sie REs klarer organisieren und einrücken. Sie können damit auch Kommentare in das RE schreiben, die von der Engine ignoriert werden. Kommentare werden mit einem „#“-Symbol gekennzeichnet, dieses Symbol darf jedoch nicht nach einer Zeichenfolge oder einem Backslash stehen. Abschließend: Wenn Sie die String-Methode verwenden können, wählen Sie keine regulären Ausdrücke, da die String-Methode einfacher und schneller ist. Weitere Artikel zu den regulären Ausdrucksoperationen des Re-Moduls von Python finden Sie auf der chinesischen PHP-Website!