Heim  >  Artikel  >  Backend-Entwicklung  >  Wissenszusammenfassung und Weitergabe regulärer Ausdrücke in Python

Wissenszusammenfassung und Weitergabe regulärer Ausdrücke in Python

黄舟
黄舟Original
2017-09-23 11:34:261427Durchsuche

Dieser Artikel stellt die Grundkenntnisse der regulären Ausdrücke in Python vor. Der Inhalt dieses Artikels beinhaltet nicht, wie man effiziente reguläre Ausdrücke schreibt und wie man reguläre Ausdrücke optimiert.

1. Syntax für reguläre Ausdrücke

1.1 Zeichen und Zeichenklassen
1 Sonderzeichen: .^$?+*{}[]()|
Wenn Sie Literalwerte verwenden möchten, müssen die oben genannten Sonderzeichen mit
2 Zeichenklassen
1 maskiert werden. Ein oder mehrere in [] enthaltene Zeichen werden als Zeichenklassen bezeichnet. Wenn nein Ist ein Quantor angegeben, wird nur einer von ihnen abgeglichen.
2. Innerhalb der Zeichenklasse kann ein Bereich angegeben werden, zum Beispiel [a-zA-Z0-9] steht für jedes Zeichen von a bis z, A bis Z, 0 bis 9
3. Die linke eckige Klammer gefolgt von A ^ bedeutet, dass eine Zeichenklasse negiert wird. [^0-9] bedeutet beispielsweise, dass sie mit jedem Nicht-Ziffer-Zeichen übereinstimmen kann.
4. Innerhalb der Zeichenklasse haben außer , andere Sonderzeichen keine besondere Bedeutung mehr und stellen alle Literalwerte dar. Das an der ersten Position platzierte ^ stellt die Negation dar, das an anderen Positionen platzierte Zeichen stellt ^ selbst dar, das in der Mitte platzierte Zeichen stellt einen Bereich dar und das als erstes Zeichen in einer Zeichenklasse platzierte Zeichen stellt das sich selbst dar.

5. Kurzschrift kann innerhalb der Zeichenklasse verwendet werden, z. B. d s w
3 Kurzschrift
Kann mit jedem Zeichen außer Zeilenumbrüchen übereinstimmen Zeichen inklusive Zeilenumbruch
   d entspricht einer Unicode-Ziffer, wenn sie re.ASCII hat, stimmt sie mit 0-9 überein
     D stimmt mit Unicode-Nichtzahlen überein
   s stimmt mit Unicode überein, wenn sie re.ASCII hat, stimmt sie überein tnrfv A
S entspricht Unicode-Nicht-Leerzeichen
w entspricht Unicode-Wortzeichen, wenn mit re.ascii, entspricht einem von [a-zA-Z0-9_]
W entspricht Unicode-Nicht-Einzelzeichen

1.2 Quantifizierer
1. ? Entspricht dem vorherigen Zeichen 0 oder 1 Mal
2. * Entspricht dem vorherigen Zeichen 0 oder mehr Mal
3. + Entspricht dem vorherigen Zeichen 1 oder mehr Mal
4. {m} stimmt m-mal mit dem vorherigen Ausdruck überein
5. {m,} stimmt mindestens m-mal mit dem vorherigen Ausdruck überein
6. {,n} stimmt höchstens n-mal mit dem vorherigen regulären Ausdruck überein
7. {m,n} stimmt mindestens m-mal und höchstens n-mal mit dem vorherigen regulären Ausdruck überein
Hinweis:
Die oben genannten Quantifizierer sind gierige Modi und stimmen mit so vielen wie möglich überein, wenn Sie sie ändern möchten Der Nicht-Greedy-Modus wird implementiert, indem dem Quantifizierer ein ? folgt.

1.3 Gruppieren und Erfassen
1 Die Rolle von ():
1. Erfassen Sie den Inhalt des regulären Ausdrucks in () für weitere Zwecke Bei der Verarbeitung können Sie die Erfassungsfunktion dieser Klammer deaktivieren, indem Sie Folgendes befolgen: ?: nach der linken Klammer
2. Kombinieren Sie einen Teil des regulären Ausdrucks, um Quantoren zu verwenden, oder |
2 Die Antwort bezieht sich auf den zuvor erfassten Inhalt () :
1. Rückverweis
durch die Gruppennummer Jeder Klammer, die ?: nicht verwendet, wird eine Gruppe zugewiesen, beginnend bei 1 und aufsteigend von links nach rechts. Sie können auf den Ausdruck im vorherigen () verweisen. ) bis i Erfasster Inhalt
2. Verweisen Sie auf den erfassten Inhalt in den vorherigen Klammern
durch den Gruppennamen. Sie können eine Gruppe erstellen, indem Sie der linken Klammer folgen und den Gruppennamen in spitze Klammern setzen . Alias, gefolgt von (?P=name), um auf den zuvor erfassten Inhalt zu verweisen. Zum Beispiel (? Pw+)s+(?P=word), um wiederholte Wörter abzugleichen.
3 Hinweise:
Rückverweise können nicht in der Zeichenklasse [] verwendet werden.

1.4 Behauptungen und Tags
Behauptungen stimmen mit keinem Text überein, sondern legen nur bestimmte Einschränkungen für den Text fest, in dem sich die Behauptung befindet
1 Häufig verwendete Behauptungen:
1. b stimmt mit der Grenze eines Wortes überein und in der Zeichenklasse [ ] platziert bedeutet Rücktaste
2. B entspricht Nicht-Wortgrenzen, die von ASCII-Tags beeinflusst werden
3. A entspricht
am Anfang 4. ^ entspricht am Anfang, falls vorhanden ist das MULTILINE-Flag, dann in Übereinstimmung mit
nach jedem Zeilenumbruchzeichen 5. (?=e) Positiver Look-Ahead
8. (?!e) Negativer Look-Ahead
9. (?<=e) Positiver Look-Back
10. (? 2 Erklärung des Look-Ahead
   Look-Ahead: exp1(?=exp2) Der Inhalt nach exp1 muss mit exp2 übereinstimmen
   Negativer Look-Ahead: exp1(?!exp2) Der Inhalt nach exp1 kann nicht match exp2
   Lookback: (?<=exp2)exp1 Der Inhalt vor exp1 muss mit exp2 übereinstimmen
  negativer Lookahead: (?   Zum Beispiel: wir Ich möchte „Hallo“ finden, aber auf „Hallo“ muss „Welt“ folgen. Schreiben Sie: „(Hallo)s+(?=Welt)“, um „Hallo Wangxing“ und „Hallo Welt“ zu finden Übereinstimmung mit dessen Hallo

 1.5 Bedingter Abgleich

  (?(id )yes_exp|no_exp): Wenn der der ID entsprechende Unterausdruck mit dem Inhalt übereinstimmt, dann stimmt er mit yes_exp überein, andernfalls stimmt er mit no_exp überein


 1.6 Flags für reguläre Ausdrücke

1. Es gibt zwei Arten von Flags für reguläre Ausdrücke. Verwendung

1. Durch Übergabe des Flag-Parameters an die Kompilierungsmethode können mehrere Flags durch | getrennt werden, z. B. re.compile( r"#[da-f]{6}b", re.IGNORECASE|re. MULTILINE)
2. Fügen Sie dem regulären Ausdruck ein Flag hinzu, indem Sie (? Flag) vor dem regulären Ausdruck hinzufügen, z. ?ms)#[da-z]{6}b
2. Häufig verwendete Flags
   re.A oder re.ASCII, sodass b B s S w W d D alle davon ausgehen, dass die Zeichenfolge lautet die Zeichenfolge ist ASCII
   re.I oder re.IGNORECASE sorgt dafür, dass der reguläre Ausdruck die Groß-/Kleinschreibung ignoriert
re.M oder re.MULTILINE gleicht mehrere Zeilen ab, sodass jedes ^ nach jedem Wagenrücklauf und jedes $ vor jedem Wagenrücklauf übereinstimmt
   re.S oder re.DOTALL ermöglicht die Übereinstimmung mit jedem Zeichen, einschließlich Enter
   re. Zum Beispiel:
   re.compile(r"""

    (?:
     (?P["']) #Linkes Anführungszeichen
                                       ules   [^1>] +? Zitat) #Rechte Klammer
    """,re.VERBOSE|re.IGNORECASE)


2. Python-Modul für reguläre Ausdrücke

2.1 Reguläre Ausdrücke Ausdrucksverarbeitungszeichenfolgen haben vier Hauptfunktionen
1. Vergleichen, um zu sehen, ob eine Zeichenfolge der Grammatik eines regulären Ausdrucks entspricht, wobei normalerweise „true“ oder „false“ zurückgegeben wird

2. Den regulären Ausdruck abrufen Extrahieren Sie den Text in der Zeichenfolge, der den Anforderungen entspricht

3. Ersetzen Sie den Text, der dem regulären Ausdruck in der Suchzeichenfolge entspricht, und ersetzen Sie ihn durch die entsprechende Zeichenfolge
4. Teilen Sie die Zeichenfolge mithilfe regulärer Ausdrücke

<.>

2.2 Zwei Möglichkeiten zur Verwendung regulärer Ausdrücke im re-Modul in Python


1. Verwenden Sie die Methode re.compile(r, f), um ein reguläres Ausdrucksobjekt zu generieren, und rufen Sie es dann auf Der reguläre Ausdruck Die entsprechende Methode des Objekts. Der Vorteil dieses Ansatzes besteht darin, dass er nach der Generierung des regulären Ausdrucksobjekts 2 mehrfach verwendet werden kann. Für jede Objektmethode des regulären Ausdrucksobjekts gibt es eine entsprechende Modulmethode Der einzige Unterschied besteht darin, dass der erste Parameter ein regulärer Ausdruck ist. Diese Methode eignet sich für reguläre Ausdrücke, die nur einmal verwendet werden.

1. rx.findall(s,start, end):
Gibt eine Liste zurück, wenn im regulären Ausdruck keine Gruppierung vorhanden ist, enthält die Liste alle übereinstimmenden Inhalte regulärer Ausdruck Wenn eine Gruppierung vorliegt, ist jedes Element in der Liste ein Tupel. Das Tupel enthält den in der Untergruppe übereinstimmenden Inhalt, aber der vom gesamten regulären Ausdruck übereinstimmende Inhalt wird nicht zurückgegeben
  2. rx.finditer(s, start , Ende):
         Melden Sie sich beim iterierbaren Objekt an und geben Sie jedes Mal ein passendes Objekt zurück. Sie können die Methode group(] des passenden Objekts aufrufen, um den von der angegebenen Gruppe übereinstimmenden Inhalt anzuzeigen. 0 steht für die gesamte Regel Ausdruck Der von der Formel abgeglichene Inhalt
3. rx.search(s, start, end):
Gibt ein passendes Objekt zurück, wenn es keine Übereinstimmung gibt, gibt es None zurück
Die Suchmethode stimmt nur einmal überein stoppt. Es wird nicht weiter abgeglichen
4. rx.match(s, start, end):
Wenn der reguläre Ausdruck am Anfang der Zeichenfolge übereinstimmt, geben Sie ein passendes Objekt zurück, andernfalls geben Sie None zurück
5. rx.sub(x, s, m):
Gibt eine Zeichenfolge zurück. Ersetzen Sie jede übereinstimmende Position durch x und geben Sie die ersetzte Zeichenfolge zurück. Wenn m angegeben ist, wird sie bis zu m-mal ersetzt. Für x können Sie /i oder /g verwenden. Die ID kann ein Gruppenname oder eine Gruppennummer sein, um auf den erfassten Inhalt zu verweisen.
   x in der Modulmethode re.sub(r, x, s, m) kann eine Funktion verwenden. Zu diesem Zeitpunkt können wir den erfassten Inhalt zur Verarbeitung durch diese Funktion leiten und dann den übereinstimmenden Text ersetzen.
6. rx.subn(x, s, m):
Wie die re.sub()-Methode, der Unterschied besteht darin, dass sie ein Tupel zurückgibt, von dem eines die Ergebniszeichenfolge und eines die Ersatznummer ist .
7. rx.split(s, m): Teilen Sie die Zeichenfolge.
Gibt eine Liste zurück.
Teilen Sie die Zeichenfolge mithilfe des Inhalts, der mit dem regulären Ausdruck übereinstimmt.
Wenn der reguläre Ausdruck Gruppen enthält, dann Fügen Sie den von der Gruppe übereinstimmenden Inhalt in die Mitte von jeweils zwei Unterteilungen in der Liste als Teil der Liste ein, z. B.:
  rx = re.compile(r"(d)[a-z]+(d)")
s = "ab12dk3klj8jk9jks5"
result = rx.split(s)
Return ['ab1', '2', '3', 'klj', '8', '9', 'jks5' ]
8. rx.flags(): Flags, die beim Kompilieren regulärer Ausdrücke gesetzt werden
9. rx.pattern(): String, der beim Kompilieren regulärer Ausdrücke verwendet wird


2.4 Eigenschaften und Methoden von passenden Objekten von


01. m.group(g, ...)

Gibt den Inhalt zurück, der mit der Nummer oder dem Gruppennamen übereinstimmt. Der Standardwert oder 0 gibt den Inhalt an, der mit dem gesamten Ausdruck übereinstimmt Wenn mehrere angegeben werden, wird ein Tupel

zurückgegeben. 02. m.groupdict(default)
Gibt ein Wörterbuch zurück. Der Schlüssel des Wörterbuchs ist der Gruppenname aller benannten Gruppen, und der Wert ist der von der benannten Gruppe erfasste Inhalt.
Wenn ein Standardparameter vorhanden ist, wird dieser als Standardwert für die Gruppen verwendet, die nicht teilnehmen im Matching.
03. m.groups(default)
Gibt ein Tupel zurück. Enthält alle Untergruppen, die Inhalte erfassen, beginnend mit 1. Wenn ein Standardwert angegeben ist, wird dieser Wert als Wert der Gruppe verwendet, die den Inhalt nicht erfasst hat
04. m.lastgroup()
Die Anzahl der der übereinstimmende Inhalt Der Name der höchsten Erfassungsgruppe. Wenn kein oder kein Name verwendet wird, geben Sie None (ungewöhnlich verwendet) zurück.
  05. m.lastindex()
   Die Nummer der Erfassungsgruppe mit der höchsten Nummer, die übereinstimmt der Inhalt, wenn nicht, geben Sie None zurück.
06. m.start(g):
Die Untergruppe des aktuell übereinstimmenden Objekts wird von dieser Position in der Zeichenfolge abgeglichen. Wenn die aktuelle Gruppe nicht an der Übereinstimmung teilnimmt, wird -1 zurückgegeben
07 . m.end (g)
                                  über von dieser Position der Saite bis zum Ende des Spiels, wenn die aktuelle Gruppe nicht am Spiel teilnimmt, wird -1 zurückgegeben '  
  08. m.span( )
   Gibt eine binäre Gruppe zurück, der Inhalt ist der Rückgabewert von m.start(g) und m.end(g)
  09. m.re()
   Der reguläre Ausdruck, der dieses passende Objekt generiert
   10. m. string()
Die Zeichenfolge
, die zum Abgleichen oder Suchen nach Übereinstimmungen übergeben wurde. 11. m.pos()
Die Startposition der Suche. Das heißt, der Anfang der Zeichenfolge oder die durch start angegebene Position (wird nicht häufig verwendet)
 12. m.endpos()
 Die Endposition der Suche. Das heißt, die Endposition der Zeichenfolge oder die durch end angegebene Position (wird nicht häufig verwendet)


 2.5 Zusammenfassung

1. Für die Funktion zum Abgleichen regulärer Ausdrücke verfügt Python nicht über eine Methode, um „true“ und „false“ zurückzugeben, aber es kann anhand der Rückgabewerte der Übereinstimmungs- oder Suchmethode beurteilt werden.
2. Für die Suchfunktion für reguläre Ausdrücke: Wenn Sie nur einmal suchen, können Sie das von der Such- oder Übereinstimmungsmethode zurückgegebene übereinstimmende Objekt verwenden. Bei mehreren Suchvorgängen können Sie das von der Finditer-Methode zurückgegebene iterierbare Objekt verwenden, um iterativ auf
zuzugreifen Ersetzungsfunktion für reguläre Ausdrücke, Sie können reguläre Ausdrücke verwenden. Sie kann durch die Sub- oder Subn-Methode des Formelobjekts oder durch die Re-Modulmethode Sub oder Subn implementiert werden. Der Unterschied besteht darin, dass der Ersetzungstext die Sub-Methode des Moduls ist kann mit einer Funktion generiert werden
4. Für die Segmentierungsfunktion für reguläre Ausdrücke können Sie die Split-Methode des regulären Ausdrucksobjekts verwenden. Beachten Sie, dass der Inhalt von der Gruppe erfasst wird, wenn das reguläre Ausdrucksobjekt gruppiert ist auch in die zurückgegebene Liste aufgenommen werden

Das obige ist der detaillierte Inhalt vonWissenszusammenfassung und Weitergabe regulärer Ausdrücke in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn