Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in reguläre Python-Ausdrücke und Re-Bibliothek (Codebeispiele)

Einführung in reguläre Python-Ausdrücke und Re-Bibliothek (Codebeispiele)

不言
不言nach vorne
2019-02-11 10:33:552001Durchsuche

Dieser Artikel bietet Ihnen eine Einführung (Codebeispiel) über reguläre Python-Ausdrücke und eine Referenz. Ich hoffe, dass er Ihnen weiterhilft.

Ein regulärer Ausdruck ist eine Zeichenfolge, die ein Suchmuster definiert. Typischerweise wird dieses Muster von Zeichenfolgensuchalgorithmen zum Suchen oder Suchen und Ersetzen von Zeichenfolgen oder zur Eingabevalidierung verwendet.

1. Reguläre Ausdruckssyntax

  • Stellt ein beliebiges einzelnes Zeichen dar

  • [] Zeichensatz , gibt einen Wertebereich für ein einzelnes Zeichen an

  • [^] Nicht-Zeichensatz, gibt einen Ausschlussbereich für ein einzelnes Zeichen an

  • * Das vorherige Zeichen wird 0-mal oder unendlich erweitert

  • + Das vorherige Zeichen wird 1-mal oder unendlich erweitert

  • Das vorherige Zeichen wird 0-mal erweitert? mal oder 1 Erweiterung

  • |Jeder der linken und rechten Ausdrücke

  • {m} erweitert das vorherige Zeichen m-mal

  • {m,n} erweitert das vorherige Zeichen m auf das n-fache

  • ^ stimmt mit dem Anfang der Zeichenfolge überein

  • $entspricht der Zeichenfolge Endung

  • () Gruppierungszeichen, nur der |.-Operator

  • d Zahlen können intern verwendet werden, was äquivalent ist bis [0-9]

  • w Wortzeichen, äquivalent zu [A-Z,a-z,0-9]

2. Verwendung der Re-Bibliothek in Python

Re-Bibliothek ist die Standardbibliothek von Python, die hauptsächlich für den String-Abgleich verwendet wird: import re

Typ der regulären Ausdruckszeichenfolge

re Die Bibliothek verwendet den Raw-String-Typ zur Darstellung regulärer Ausdrücke, der ausgedrückt wird als
r'text'
Rohstring ist ein String, der keine Escape-Zeichen mehr enthält , kurz gesagt, String maskiert Zeichen, unformatierte Zeichenketten jedoch nicht, da Escape-Symbole in regulären Ausdrücken vorkommen. Um Langeweile zu vermeiden, verwenden wir unformatierte Zeichenketten

2.2 Hauptfunktionsfunktionen der Re-Bibliothek

  • re.search() sucht die erste Position des regulären Ausdrucks in einer Zeichenfolge und gibt das Übereinstimmungsobjekt

  • re zurück .match() Gleicht einen regulären Ausdruck vom Anfang einer Zeichenfolge ab und gibt ein Übereinstimmungsobjekt zurück

  • re.findall() Suchzeichenfolge, gibt alle zurück Abgleich von Teilzeichenfolgen im Listentyp

  • re.split() Teilt eine Zeichenfolge entsprechend dem Ergebnis der regulären Ausdrucksübereinstimmung und gibt den Listentyp

  • re.finditer() Suchzeichenfolge und Rückgabe eines Iterationstyps passender Ergebnisse. Jedes Iterationselement ist ein Übereinstimmungsobjekt

  • re. sub()Ersetzen Sie alle Teilzeichenfolgen, die dem regulären Ausdruck in einem String entsprechen, und geben Sie den ersetzten String zurück

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

Suchen Sie nach der ersten Position des regulären Ausdrucks in einer Zeichenfolge und geben Sie das Übereinstimmungsobjekt zurück

  • Muster: die Zeichenfolge oder native Zeichenfolgendarstellung des regulären Ausdrucks

  • Zeichenfolge: die Zeichenfolge, mit der abgeglichen werden soll

  • Flags: wenn der reguläre Ausdruck verwendet wird Das Kontroll-Tag

  • re.I re.IGNORECASE ignoriert die Groß-/Kleinschreibung des regulären Ausdrucks, [A-Z] kann mit den Kleinbuchstaben übereinstimmen

  • re.M re.MULTILINE Der ^-Operator in regulären Ausdrücken kann beginnen jede Zeile einer bestimmten Zeichenfolge als Übereinstimmung

  • re.S re.DOTALL in regulären Ausdrücken. Der Operator kann alle Zeichen abgleichen und gleicht standardmäßig alle Zeichen außer Zeilenumbrüchen

  • Beispiel:
import re
match = re.search(r'[1-9]\d{5}', 'BIT 100081')
if match:
    print(match.group(0))

结果为100081

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

entspricht dem regulären Ausdruck vom Anfang eines Strings und gibt das Übereinstimmungsobjekt zurück

Die Parameter sind die gleichen wie bei der Suchfunktion

Beispiel:

import re
match = re.match(r'[1-9]\d{5}', 'BIT 100081')
print(match.group(0))

结果会报错,match为空,因为match函数是
从字符串开始位置开始匹配,因为从开始位置没有匹配到,所以为空

2.2.3 re .findall(pattern, string, flags=0)

Suchen Sie nach einer Zeichenfolge und geben Sie alle passenden Teilzeichenfolgen im Listentyp zurück

Die Parameter sind die gleichen wie bei der Suche

Beispiel:

import re
ls=re.findall(r'[1-9]\d{5}', 'BIT100081 TSU100084')
print(ls)

结果为['100081', '100084']

2.2.4. flags=0)

Teilen Sie eine Zeichenfolge entsprechend dem Ergebnis des regulären Ausdrucks auf und geben Sie den Listentyp zurück

    maxsplit: Die maximale Anzahl der Teilungen, der verbleibende Teil wird ausgegeben als letztes Element
  • Beispiel:
import re
re.split(r'[1-9]\d{5}', 'BIT100081 TSU100084')
结果['BIT', ' TSU', ' ']
re.split(r'[1-9]\d{5}', 'BIT100081 TSU100084', maxsplit=1)
结果['BIT', ' TSU100081']

2.2.5. re.finditer(pattern, string, maxsplit=0, flags=0)

Suchzeichenfolge und Rückgabe eines Iterationstyps mit passenden Ergebnissen

Die Parameter sind die gleichen wie bei der Suche

2.2.6 (Muster, Repl, String, Anzahl=0, Flags=0)

Ersetzen Sie alle Teilstrings, die dem regulären Ausdruck in einem String entsprechen, und geben Sie den ersetzten String zurück

repl: Ersetzen Sie die Zeichenfolge, die mit der Zeichenfolge übereinstimmt

  • Anzahl: Die maximale Anzahl von Ersetzungen für die Übereinstimmung

  • Beispiel:

    import re
    for m in re.finditer(r'[1-9]\d{5}', 'BIT100081 TSU100084'):
        if m:
            print(m.group(0))
    结果为
    100081
    100084
  • 2.3 Eine weitere äquivalente Verwendung der Re-Bibliothek (objektorientiert)
import re
re.sub(r'[1-9]\d{5}', ':zipcode', 'BIT100081 TSU100084')
结果为
'BIT:zipcode TSU:zipcode'
rst=re.search(r'[1-9]\d{5}', 'BIT 100081')
函数式的调用,一次性操作

regex=re.complie(pattern,flags=0)

regex hat auch die oben genannten sechs Verwendungen

2.4 Match-Objekt von Re-Bibliothek


Match-Objekt ist das Ergebnis einer Übereinstimmung und enthält viele Übereinstimmungsinformationen

Das Folgende sind Attribute des Match-Objekts

.string Zu vergleichender Text

  • .re Musterobjekt, das für den Vergleich verwendet wird (regulärer Ausdruck)

  • .pos Die Startposition des Suchtexts für reguläre Ausdrücke

  • .endpos Die Endposition des Suchtexts für reguläre Ausdrücke

Im Folgenden sind die Methoden des Match-Objekts

  • .group(0) aufgeführt, um die übereinstimmende Zeichenfolge

  • .start() entspricht der Zeichenfolge am Anfang der ursprünglichen Zeichenfolge.

  • .end() entspricht der Zeichenfolge am Ende der ursprünglichen Zeichenfolge

  • .span() gibt (.start(), .end()) zurück

2.5 Greedy Matching und minimales Matching der Re-Bibliothek

Wenn ein regulärer Ausdruck mit mehreren Elementen unterschiedlicher Länge übereinstimmen kann, welches wird zurückgegeben? Die Re-Bibliothek verwendet standardmäßig Greedy Matching, das heißt, sie gibt den längsten passenden Teilstring

den kleinsten passenden

    *? bevor ein Zeichen 0-mal oder unendlich erweitert wird, ist die Mindestübereinstimmung
  • +? Das vorherige Zeichen wird 1-mal oder unendlich erweitert, die Mindestübereinstimmung ist
  • ? Das vorherige Zeichen 0 oder 1 Mal erweitern, die Mindestübereinstimmung ist
  • {m,n}? Das vorherige Zeichen m bis n-mal erweitern ), die Mindestübereinstimmung ist
Solange die Längenausgabe unterschiedlich sein kann, können Sie nach dem Operator ? hinzufügen, um die Mindestübereinstimmung zu erhalten

Das obige ist der detaillierte Inhalt vonEinführung in reguläre Python-Ausdrücke und Re-Bibliothek (Codebeispiele). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen