Latest web development tutorials

Python Regular Expressions

Reguläre Ausdrücke sind eine spezielle Zeichensequenz, kann es Ihnen helfen, leicht zu überprüfen, ob eine Zeichenfolge mit einem Muster übereinstimmt.

Python re Modul erhöht sich seit Version 1.5, Muster für reguläre Ausdrücke, die Perl-Stil bietet.

re-Modul ermöglicht Python-Sprache verfügt über alle Funktionen der regulären Ausdrücke.

kompilieren Funktion einen regulären Ausdruck Objekt aus einer Musterkette und optionale Parameter Flags zu generieren. Dieses Objekt hat eine Reihe von Methoden für reguläre Ausdrücke und Substitution.

re-Modul stellt auch ein Verfahren im Einklang mit diesen Funktionen Funktionen, die eine Musterkette als erstes Argument verwenden.

In diesem Abschnitt werden die allgemeinen Funktionen Python regulären Verarbeitung Ausdruck.


re.match Funktion

re.match versucht, ein Muster von der Startposition der Zeichenkette entsprechen, wenn nicht die Ausgangsposition Anpassung erfolgreich ist, match () gibt keine.

Funktion Syntax:

re.match(pattern, string, flags=0)

Funktionsparameter:

Parameter Beschreibung
Muster Nach regulärem Ausdruck
Schnur Die Zeichenfolge übereinstimmen.
Fahnen Flagge, die reguläre Ausdrücke verwendet werden, um zu steuern, wie zum Beispiel:, ob die zwischen Groß- und mehrzeiligen entspricht, und so weiter.

Erfolgreiche Spiel re.match Methode gibt ein Match-Objekt, sonst keine.

Wir können die Gruppe (num) oder Gruppen () Funktion verwenden, die passenden Objekte Ausdrücke passen zu bekommen.

Passende Objektmethoden Beschreibung
Gruppe (num = 0) Der gesamte Ausdruck String-Matching, Gruppe () kann mehr als eine Gruppennummer eingeben, in diesem Fall einen Wert entsprechend den Gruppen von Tupeln zurück.
Gruppen () Es gibt ein Tupel aller Gruppen des Strings von 1 bis zur Anzahl in der Gruppe enthalten sind.

Beispiel 1:

#!/usr/bin/python
# -*- coding: UTF-8 -*- 

import re
print(re.match('www', 'www.w3big.com').span())  # 在起始位置匹配
print(re.match('com', 'www.w3big.com'))         # 不在起始位置匹配

Führen Sie das obige Beispiel Ausgabe lautet:

(0, 3)
None

Beispiel 2:

#!/usr/bin/python
import re

line = "Cats are smarter than dogs"

matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)

if matchObj:
   print "matchObj.group() : ", matchObj.group()
   print "matchObj.group(1) : ", matchObj.group(1)
   print "matchObj.group(2) : ", matchObj.group(2)
else:
   print "No match!!"

Die Ergebnisse der vorstehenden Beispiele sind wie folgt:

matchObj.group() :  Cats are smarter than dogs
matchObj.group(1) :  Cats
matchObj.group(2) :  smarter

re.search Verfahren

re.search scannen die gesamte Zeichenfolge und gibt die erste erfolgreiche Spiel.

Funktion Syntax:

re.search(pattern, string, flags=0)

Funktionsparameter:

Parameter Beschreibung
Muster Nach regulärem Ausdruck
Schnur Die Zeichenfolge übereinstimmen.
Fahnen Flagge, die reguläre Ausdrücke verwendet werden, um zu steuern, wie zum Beispiel:, ob die zwischen Groß- und mehrzeiligen entspricht, und so weiter.

Erfolgreiche Spiel re.search Methode gibt ein Match-Objekt, sonst keine.

Wir können die Gruppe (num) oder Gruppen () Funktion verwenden, die passenden Objekte Ausdrücke passen zu bekommen.

Passende Objektmethoden Beschreibung
Gruppe (num = 0) Der gesamte Ausdruck String-Matching, Gruppe () kann mehr als eine Gruppennummer eingeben, in diesem Fall einen Wert entsprechend den Gruppen von Tupeln zurück.
Gruppen () Es gibt ein Tupel aller Gruppen des Strings von 1 bis zur Anzahl in der Gruppe enthalten sind.

Beispiel 1:

#!/usr/bin/python
# -*- coding: UTF-8 -*- 

import re
print(re.search('www', 'www.w3big.com').span())  # 在起始位置匹配
print(re.search('com', 'www.w3big.com').span())         # 不在起始位置匹配

Führen Sie das obige Beispiel Ausgabe lautet:

(0, 3)
(11, 14)

Beispiel 2:

#!/usr/bin/python
import re

line = "Cats are smarter than dogs";

searchObj = re.search( r'(.*) are (.*?) .*', line, re.M|re.I)

if searchObj:
   print "searchObj.group() : ", searchObj.group()
   print "searchObj.group(1) : ", searchObj.group(1)
   print "searchObj.group(2) : ", searchObj.group(2)
else:
   print "Nothing found!!"
Die Ergebnisse der vorstehenden Beispiele sind wie folgt:
searchObj.group() :  Cats are smarter than dogs
searchObj.group(1) :  Cats
searchObj.group(2) :  smarter

Der Unterschied re.match und re.search

re.match passt nur den Anfang der Zeichenfolge, wenn der Beginn der Zeichenfolge nicht den regulären Ausdruck nicht erfüllt, das Spiel ausfällt, kann die Funktion None zurückgibt, und re.search die gesamte Zeichenfolge übereinstimmen, bis es eine Übereinstimmung findet.

Beispiel:

#!/usr/bin/python
import re

line = "Cats are smarter than dogs";

matchObj = re.match( r'dogs', line, re.M|re.I)
if matchObj:
   print "match --> matchObj.group() : ", matchObj.group()
else:
   print "No match!!"

matchObj = re.search( r'dogs', line, re.M|re.I)
if matchObj:
   print "search --> matchObj.group() : ", matchObj.group()
else:
   print "No match!!"
Beispiele für die obigen Ergebnisse sind wie folgt:
No match!!
search --> matchObj.group() :  dogs

Suchen und Ersetzen

Python re-Modul sorgt für die Ersatz-String Match re.sub.

Syntax:

re.sub(pattern, repl, string, max=0)

Der zurückgegebene String ist die Zeichenfolge, mit der linken RE Spiele werden nicht ersetzen wiederholt werden. Wenn das Muster nicht gefunden wird, wird Zeichen unverändert zurückgegeben.

Optional Parameteranzahl ist die maximale Anzahl, wie oft ein Musterabgleich Ersatz; Zählung muss eine nicht negative ganze Zahl sein. Der Standardwert ist 0 bedeutet alle Vorkommen zu ersetzen.

Beispiel:

#!/usr/bin/python
import re

phone = "2004-959-559 # This is Phone Number"

# Delete Python-style comments
num = re.sub(r'#.*$', "", phone)
print "Phone Num : ", num

# Remove anything other than digits
num = re.sub(r'\D', "", phone)    
print "Phone Num : ", num
Die Ergebnisse der vorstehenden Beispiele sind wie folgt:
Phone Num :  2004-959-559
Phone Num :  2004959559

Regex Modifikator - optional Flagge

Reguläre Ausdrücke können optional Flags Modifikatoren enthalten, um das Spiel-Modus steuern. Modifier ist als optionales Flag angegeben. (|) Um mehrere Flags angeben, die bitweise werden kann, oder durch. Als re.I | re.M auf I und M-Flags gesetzt:

Modifikatoren Beschreibung
re.I So wird das Matching nicht case sensitive
re.L Haben Lokalisierung Identifikation (locale-aware) Matching
re.M Multi-line-Matching, zu beeinflussen ^ und $
re.S So., inklusive Zeilenumbrüche passen alle Zeichen
re.U Nach Unicode-Zeichensatz Zeichen lösen. Dieses Flag wirkt \ w, \ W, \ b, \ B.
re.X Diese Flagge von Ihnen flexiblere Format zu geben, so dass Sie reguläre Ausdrücke leichter verständlich schreiben.

Regulärer Ausdruck Muster

Pattern-String eine spezielle Syntax mit einem regulären Ausdruck zu bezeichnen:

Buchstaben und Ziffern selbst. Ein regulärer Ausdruck Muster aus Buchstaben und Zahlen entsprechen die gleiche Zeichenfolge.

Die meisten der Buchstaben und Zahlen wird eine andere Bedeutung haben, wenn ein Backslash.

Interpunktion wird entkam nur, wenn das Spiel selbst, oder sie eine besondere Bedeutung darstellen.

Aufkantung muss sich als Escape zu verwenden.

Da reguläre Ausdrücke in der Regel Schrägstriche enthalten, so sollten Sie besser die ursprüngliche Zeichenfolge, um sie darzustellen verwenden. Schemaelemente (wie r '/ t', das entspricht '// t') zu den entsprechenden Sonderzeichen.

In der folgenden Tabelle sind die regulären Ausdrücken Syntax spezifische Elemente. Wenn Ihre Nutzungsmuster während optionalen Flags Argument nennen, haben wir die Bedeutung bestimmter Elemente des Musters verändern.

Modus Beschreibung
^ Entspricht dem Anfang der Zeichenfolge
$ Spiele das Ende des Strings.
. Entspricht einem beliebigen Zeichen außer Newline, wenn re.DOTALL Flag angegeben ist, können Sie ein beliebiges Zeichen einschließlich Newline können.
[...] Es verwendet, um eine Gruppe von Zeichen darstellen, separat aufgeführt: [amk] Spiel 'a', 'm' oder 'k'
[^ ...] Nicht [] Zeichen: [^ abc] passt zusätzlich zu den a, b, c Zeichen.
re * 0 oder mehr Ausdrucksanpassung.
re + Eine oder mehrere der passenden Ausdrücke.
re? Spiel 0 oder 1 durch die vorstehenden regulären Ausdrücken Segmente zu definieren, nicht gierige Weise
re {n}
re {n,} Eine genaue Übereinstimmung von n vorhergehenden Ausdrucks.
re {n, m} Spiel n bis m-mal durch die vorstehenden regulären Ausdrücken Segmente definieren, gierig Weg
a | b Ein Spiel oder b
(Re) G Match Ausdruck in den Klammern steht auch eine Gruppe
(? Imx) Regulärer Ausdruck besteht aus drei optionalen Flags: i, m oder x. Es wirkt sich nur auf den Bereich in Klammern.
(? -imx) Reguläre Ausdrücke Schließen i, m oder x optional Flagge. Es wirkt sich nur auf den Bereich in Klammern.
(: Re) Ähnliche (...), aber stellt keine Gruppe
(Imx :? Re) Ich benutze in Klammern, m oder x optional Flagge
(-imx :? Re) verwende ich Sie in Klammern nicht, m ​​oder x optional Flagge
(? # ...) Hinweis.
(? = Re) Leiten Sie sicher Begrenzer. Wenn die enthaltenen regulären Ausdruck, hier vertreten durch ..., Spiele erfolgreich an der aktuellen Position, und scheitert aus anderen Gründen. Sobald jedoch der enthaltenen Ausdruck versucht worden, wird die Übereinstimmungsmaschine nicht vorrücken, der Rest des Musters wird auch versuchen delimiter rechts.
(?! Re) Vorwärts Negation Trennzeichen. Und sicherlich Gegenteil Begrenzer; dann erfolgreich, wenn die darin enthaltenen Ausdruck der aktuellen Position nicht in der Zeichenfolge übereinstimmen
(?> Re) Unabhängige Pattern-Matching, Rückzieher zu beseitigen.
\ W Spiel alphanumerischen Zeichen und Unterstrichen
\ W Nicht-alphanumerischen Zeichen und Unterstrichen
\ S Entspricht einem beliebigen Leerzeichen, das entspricht [\ t \ n \ r \ f].
\ S Spiele alle nicht-leeren Zeichen
\ D Entspricht einer beliebigen Zahl, die äquivalent zu [0-9] ist.
\ D Spiele nicht numerische
\ A Entspricht dem Beginn des Strings
\ Z Spiel String Ende, wenn es Newline existiert, kurz vor dem Ende der Zeichenfolge Newline übereinstimmen. c
\ Z Spiel Strangende
\ G Spiel Spiel letzte Position abgeschlossen.
\ B Entspricht einer Wortgrenze, das heißt, um es in die Lage und die Leerzeichen zwischen den Wörtern bezieht. Zum Beispiel kann 'er \ b' entsprechen den "nie" im "er", kann aber das "Verb" nicht übereinstimmen in dem "er".
\ B Nicht-Wortgrenze. 'Er \ B' können die "Verb" passen in das "er", aber nicht mithalten können "nie" im "er".
\ N \ t, und dergleichen. Spiele eine neue Zeile. Spiele ein Tab-Zeichen. warten Sie
\ 1 ... \ 9 Passende Unterausdruck n-te Paket.
\ 10 Passen Sie die ersten n Pakete subexpression, wenn es nach einem Spiel ist. Ansonsten bezieht sich der Ausdruck auf den Oktal-Zeichencode.

Beispiele für reguläre Ausdrücke

Zeichenvergleich

Beispiele Beschreibung
python Passende "Python".

Charakterklassen

Beispiele Beschreibung
[Pp] ython Passende "Python" oder "Python"
rub [ihr] Match "Rubin" oder "Rübe"
[Aeiou] Jeder der Buchstaben in Klammern passend
[0-9] Spiele eine beliebige Ziffer. Ähnlich wie [0123456789]
[Az] Alle Kleinbuchstaben
[AZ] Entspricht einem beliebigen Groß
[A-zA-Z0-9] Spiele alle Buchstaben und Zahlen
[^ Aeiou] Zusätzlich zu allen anderen Zeichen als Buchstaben aeiou
[^ 0-9] Passende Zeichen außer Zahlen

Besondere Charakterklassen

Beispiele Beschreibung
. Entspricht einem einzelnen Zeichen außer "\ n" ist. wie die Verwendung von '[. \ N] "-Modus mit' \ n ', einschließlich aller Zeichen, übereinstimmen.
\ D Spiele eine Ziffer. Entspricht [0-9].
\ D Letztes Spiel nicht numerische Zeichen. Es ist äquivalent zu [^ 0-9].
\ S Spiele keine Leerzeichen, einschließlich Leerzeichen, Tabulatoren, Seitenumbrüche und so weiter. Äquivalent [\ f \ n \ r \ t \ v].
\ S Spiele alle nicht Leerzeichen. Entspricht [^ \ f \ n \ r \ t \ v].
\ W Wer passt zu einem beliebigen Wortzeichen einschließlich Unterstrich. Sie ist äquivalent zu "[A-Za-z0-9_] '.
\ W Stimmt mit jedem nicht-Wort-Zeichen. Sie ist äquivalent zu "[^ A-Za-z0-9_] '.