Heim Backend-Entwicklung Python-Tutorial Reguläre Python-Ausdrücke

Reguläre Python-Ausdrücke

Oct 19, 2016 pm 04:37 PM
python基础

Reguläre Ausdrücke sind eine leistungsstarke und standardmäßige Methode zum Suchen, Ersetzen und Parsen komplexer Zeichenfolgen. Alle regulären Ausdrücke in Python befinden sich im re-Modul.

1 Häufige Übereinstimmungen

^passt auf den Anfang der Zeichenfolge zu

$trifft auf das Ende der Zeichenfolge zu

btrifft auf die Grenze eines Wortes zu

d entspricht einer beliebigen Zahl

D entspricht einem beliebigen nicht numerischen Zeichen

x? entspricht einem optionalen x (entspricht 1 oder 0 x Zeichen)

x* Übereinstimmung mit x

x 0 oder öfter. Übereinstimmung mit x

x{n,m} 1 oder öfter, mindestens n-mal und höchstens m-mal x

(a| b |c) entspricht entweder a oder b oder entspricht c

(x) stellt im Allgemeinen eine Speichergruppe dar. Sie können die Funktion groups() des von der Funktion re.search zurückgegebenen Objekts verwenden, um diese abzurufen Wert

2 Allgemeiner Zweck

#-------------------------------------------------------------------------------
# coding:        utf-8
# Purpose:正则表达式
#
# Author:      zdk
#
# Created:     26/02/2013
# Copyright:   (c) zdk 2013
#-------------------------------------------------------------------------------
  
import re
if __name__ == '__main__':
    addr = "100 BROAD ROAD APT.3"
    print(re.sub("ROAD","RD",addr)) # 100 BRD RD APT.3
    print(re.sub(r"\bROAD\b","RD",addr)) # 100 BROAD RD APT.3
    pattern = ".*B.*(ROAD)?"
    print(re.search(pattern,"ROAD")) #None
    print(re.search(pattern,"B")) #<_sre.SRE_Match object at 0x0230F020><span style="background-color:#FAFAFA;font-family:Monaco, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, Consolas, &#39;Courier New&#39;, monospace;font-size:1em;line-height:1.5;"> </span>
Nach dem Login kopieren

(1) re.sub("ROAD","RD",addr) Verwenden Sie die Funktion re.sub, um die Zeichenfolge addr zu durchsuchen, um die Anforderungen zu erfüllen Ausdruck Ersetzen Sie

durch „RD“ in der Formel „ROAD“ (2) re.sub(r“bROADb“, „RD“, addr), „b“ bedeutet „Wortgrenze“, in Python, Da Das Zeichen „“ muss in der Zeichenfolge maskiert werden. Dies kann sehr problematisch werden. Daher verwendet Python das Präfix r, um anzuzeigen, dass nicht alle Zeichen in der Zeichenfolge maskiert werden.

(3) re.search(pattern, „ROAD“) Das re-Modul verfügt über zwei Parameter, einer ist ein regulärer Ausdruck und der andere ist eine Zeichenfolge Dieses übereinstimmende Objekt kann in einer Methode beschrieben werden und None wird zurückgegeben, wenn keine Übereinstimmung gefunden wird.

3 Lose reguläre Ausdrücke

Die oben genannten sind alle Ausdrücke vom Typ „kompakt“, die schwer zu lesen sind. Auch wenn die Bedeutung des Ausdrucks jetzt klar ist, gibt es keine Garantie dafür Ich kann es auch ein paar Monate später noch lesen. Daher ermöglicht Python Benutzern die Verwendung sogenannter loser regulärer Ausdrücke, um die Anforderungen von Inline-Dokumenten zu erfüllen. Es gibt zwei Hauptunterschiede zu allgemeinen Ausdrücken in den folgenden zwei Aspekten:

Leerzeichen ignorieren. Leerzeichen, Tabulatoren und Wagenrückläufe stimmen nicht mit sich selbst überein (wenn Sie ein Leerzeichen in einem losen regulären Ausdruck abgleichen möchten, müssen Sie es nicht durch Einfügen eines Backslash-Zeichens davor maskieren)

Ignorieren Kommentare. Kommentare beginnen wie normaler Python-Code mit dem #-Symbol und enden am Ende der Zeile.

#松散带有内联注释的正则表达式
    pattern = """
    ^   # begin of string
    M{0,3} # 0 to 3 M
    (CM|CD|D?C{0,3}) #CM or CD or D or D 0 to 3 C
    $   #end of string
    """
    print(re.search(pattern,"MCM",re.VERBOSE)) #<_sre.SRE_Match object at 0x021BAF60>
    print(re.search(pattern,"M99",re.VERBOSE)) #None
Nach dem Login kopieren

(1) Bei der Verwendung loser regulärer Ausdrücke ist das Wichtigste: Es muss ein zusätzlicher Parameter re.VERBOSE übergeben werden, der eine Konstante des re-Moduls ist und die Übereinstimmung als regulär markiert Ausdruck ist ein loser regulärer Ausdruck. Musterräume und Kommentare werden ignoriert, haben aber gleichzeitig eine bessere Lesbarkeit.

4 Fallstudien: Parsing-Telefonnummern

müssen mit den folgenden Telefonnummern übereinstimmen:

800-555-1212

800 555 1212

800.555.1212

(800)555-1212

1-800-555-1212

800-555-1212-1234

800 -555-1212x1234

800-555-1212 ext.1234

work 1-(800) 555,1212 #1234

Es gibt viele Formate, was wir brauchen Wir wissen, dass 800 die Ortsvorwahl ist, die Amtsleitungsnummer ist 555 und die anderen Ziffern in der Telefonnummer sind 1212. Für diejenigen mit Durchwahlnummern müssen wir wissen, dass die Durchwahlnummer 1234 ist

phonePattern = re.compile(r&#39;&#39;&#39;
    # don&#39;t match beginging of string
(\d{3}) # 3 digits
\D*     #any number of non-digits
(\d{3}) # 3 digits
\D*     #any number of non-digits
(\d{4}) # 4 digits
\D*     #any number of non-digits
(\d*)   #any number of digits
&#39;&#39;&#39;,re.VERBOSE)
print(phonePattern.search(&#39;work 1-(800)555.1212 #1234&#39;).groups()) #(&#39;800&#39;, &#39;555&#39;, &#39;1212&#39;, &#39;1234&#39;)
Nach dem Login kopieren

print(phonePattern.search('work 1-( 800)555.1212 #1234').groups()) #('800', '555', '1212', '1234')

(1) Ein loser regulärer Ausdruck ist wie oben: Zuerst werden 3 numerische Ortsvorwahlen gefunden (beginnt nicht unbedingt mit dem ersten Zeichen, daher wird ^ nicht verwendet), dann wird eine beliebige Anzahl nicht numerischer Zeichen gefunden, dann werden 3 numerische Amtsleitungsnummern gefunden, dann werden Übereinstimmungen gefunden eine beliebige Anzahl nicht numerischer Zeichen, dann eine Übereinstimmung mit 4 Eine numerische Nummer, dann eine beliebige Anzahl nicht numerischer Zeichen, dann eine beliebige Anzahl numerischer Durchwahlnummern und dann die Gruppenfunktion zum Gruppieren verwenden, um die richtige Telefonnummer zu erhalten.


Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie löste ich das Problem der Berechtigungen beim Betrachten der Python -Version in Linux Terminal? Wie löste ich das Problem der Berechtigungen beim Betrachten der Python -Version in Linux Terminal? Apr 01, 2025 pm 05:09 PM

Lösung für Erlaubnisprobleme beim Betrachten der Python -Version in Linux Terminal Wenn Sie versuchen, die Python -Version in Linux Terminal anzuzeigen, geben Sie Python ein ...

Wie kann ich die gesamte Spalte eines Datenrahmens effizient in einen anderen Datenrahmen mit verschiedenen Strukturen in Python kopieren? Wie kann ich die gesamte Spalte eines Datenrahmens effizient in einen anderen Datenrahmen mit verschiedenen Strukturen in Python kopieren? Apr 01, 2025 pm 11:15 PM

Bei der Verwendung von Pythons Pandas -Bibliothek ist das Kopieren von ganzen Spalten zwischen zwei Datenrahmen mit unterschiedlichen Strukturen ein häufiges Problem. Angenommen, wir haben zwei Daten ...

Wie erstelle ich dynamisch ein Objekt über eine Zeichenfolge und rufe seine Methoden in Python auf? Wie erstelle ich dynamisch ein Objekt über eine Zeichenfolge und rufe seine Methoden in Python auf? Apr 01, 2025 pm 11:18 PM

Wie erstellt in Python ein Objekt dynamisch über eine Zeichenfolge und ruft seine Methoden auf? Dies ist eine häufige Programmieranforderung, insbesondere wenn sie konfiguriert oder ausgeführt werden muss ...

Wie lehre ich innerhalb von 10 Stunden die Grundlagen für Computer-Anfänger-Programmierbasis in Projekt- und problemorientierten Methoden? Wie lehre ich innerhalb von 10 Stunden die Grundlagen für Computer-Anfänger-Programmierbasis in Projekt- und problemorientierten Methoden? Apr 02, 2025 am 07:18 AM

Wie lehre ich innerhalb von 10 Stunden die Grundlagen für Computer -Anfänger für Programmierungen? Wenn Sie nur 10 Stunden Zeit haben, um Computer -Anfänger zu unterrichten, was Sie mit Programmierkenntnissen unterrichten möchten, was würden Sie dann beibringen ...

Wie hört Uvicorn kontinuierlich auf HTTP -Anfragen ohne Serving_forver () an? Wie hört Uvicorn kontinuierlich auf HTTP -Anfragen ohne Serving_forver () an? Apr 01, 2025 pm 10:51 PM

Wie hört Uvicorn kontinuierlich auf HTTP -Anfragen an? Uvicorn ist ein leichter Webserver, der auf ASGI basiert. Eine seiner Kernfunktionen ist es, auf HTTP -Anfragen zu hören und weiterzumachen ...

Was sind einige beliebte Python -Bibliotheken und ihre Verwendung? Was sind einige beliebte Python -Bibliotheken und ihre Verwendung? Mar 21, 2025 pm 06:46 PM

In dem Artikel werden beliebte Python-Bibliotheken wie Numpy, Pandas, Matplotlib, Scikit-Learn, TensorFlow, Django, Flask und Anfragen erörtert, die ihre Verwendung in wissenschaftlichen Computing, Datenanalyse, Visualisierung, maschinellem Lernen, Webentwicklung und h beschreiben

Wie kann man vom Browser vermeiden, wenn man überall Fiddler für das Lesen des Menschen in der Mitte verwendet? Wie kann man vom Browser vermeiden, wenn man überall Fiddler für das Lesen des Menschen in der Mitte verwendet? Apr 02, 2025 am 07:15 AM

Wie kann man nicht erkannt werden, wenn Sie Fiddlereverywhere für Man-in-the-Middle-Lesungen verwenden, wenn Sie FiddLereverywhere verwenden ...

See all articles