Python regulärer Ausdruck

Python regulärer Ausdruck
In diesem Thema lernen wir Python reguläre Ausdrücke.

Definition: Reguläre Ausdrücke, manchmal als Regex oder Regexp bezeichnet, sind Sequenzen von Zeichen, die Muster in Text/String übereinstimmen, die übereinstimmen,. Python hat ein integriertes RE -Modul, um dies durchzuführen.

Die üblichen Verwendungen eines regulären Ausdrucks sind:

  1. Suchen Sie eine Zeichenfolge (suchen und suchen)
  2. Finden Sie alle passenden Zeichenfolge (findall)
  3. Split String in Substring (geteilt)
  4. Ersetzen Sie einen Teil einer Zeichenfolge (sub)

Ein regelmäßiger Ausdruck ist eine Kombination aus Alphabeten, Metacharactriers. Die folgenden Metacharaccters sind also verfügbar.

  • \ Dies wird verwendet, um die besondere Bedeutung des Zeichens fallen zu lassen/zu ignorieren
  • [] Dies zeigt eine Charakterklasse, bei der EX: [A-Z], [A-Za-Z0-9]
  • ^ Dies entspricht dem Beginn des Textes
  • $ Dies entspricht dem Ende des Textes
  • . Dies entspricht jedem Charakter außer Newline
  • ? Übereinstimmen Null oder ein Ereignis.
  • | Mittel oder (übereinstimmen mit einem der von ihm getrennten Zeichen.
  • * Eine beliebige Anzahl von Vorkommen (einschließlich 0 Vorkommen)
  • + Ein oder mehrere Ereignisse
  • Geben mehrere Vorkommen eines vorhergehenden RE an, das übereinstimmt.
  • () Schließen Sie eine Gruppe von Regexp ein

Wenn wir Backslash '\' verwenden, zeigt es verschiedene Sequenzen an. Ich möchte Backslash ohne ihre besondere Bedeutung verwenden. Verwenden Sie '\\'.

  • \ D entspricht einer Dezimalstelligkeit, dies ist der gleiche wie die festgelegte Klasse [0-9]
  • \ D entspricht einem nicht-digiten Charakter
  • \ s entspricht jedem Whitespace -Charakter.
  • \ S entspricht einem Nicht-Whitespace-Charakter
  • \ W entspricht einem alphanumerischen Charakter; Dies ist dasselbe wie eine Klasse [a-za-z0-9_].
  • \ W entspricht einem nicht alphanumerischen Charakter.

Die folgende Methode im Re -Modul erhältlich:

Re.suchen() :

Diese Methode gibt den passenden Teil der Zeichenfolge zurück und bleibt nach dem ersten Match gestoppt. Dies kann also zum Testen eines Ausdrucks verwendet werden, anstatt Daten zu extrahieren.

Syntax: Betreff.Suche (Muster, Zeichenfolge)
Rückgabewert:
Keiner : Das Muster stimmt nicht überein
Saite : Muster angepasst

Ex: In diesem Beispiel werden Monat und Datum gesucht

Import Re
regexp = r "([a-za-z]+) (\ d+)"
Match = re.Suche (Regexp, "Mein Sohn Geburtstag ist am 20. Juli")
Wenn Match != Keine:
drucken ("Match bei Index %S, %s" %(Match.start (), übereinstimmen.end ()))#Dies liefert Index der übereinstimmten Zeichenfolge
drucken ("Full Match: % S" % (Match Match.Gruppe (0)))
drucken ("Monat: % s" % (Match.Gruppe 1)))
drucken ("Tag: % s" % (Match.Gruppe (2)))
anders:
print ("Das angegebene Regex -Muster stimmt nicht überein")

Betreff.passen() :

Diese Methode sucht und gibt das erste Spiel zurück. Dies überprüft das Spiel nur am Anfang der Zeichenfolge.

Syntax: Betreff.Match (Muster, String)
Rückgabewert:
Keine: Das Muster stimmt nicht überein
String: Muster übereinstimmend

EX: Dieses Beispiel, um das Muster zu zeigen, das angepasst wurde, beginnend der String

Import Re
regexp = r "([a-za-z]+) (\ d+)"
Match = re.Match (Regexp, "20. Juli")
Wenn match == keine:
print ("kein gültiges Datum")
anders:
drucken ("gegebener String: % S" % (übereinstimmen.Gruppe()))
drucken ("Monat: % s" % (Match.Gruppe 1)))
drucken ("Tag: % s" % (Match.Gruppe (2)))

Beispiel: Das Muster zu zeigen, das zu Beginn nicht übereinstimmt

Import Re
Match = re.Match (Regexp, "Mein Sohn Geburtstag ist am 20. Juli")
Wenn match == keine:
print ("kein gültiges Datum")
anders:
drucken ("gegebener String: % S" % (übereinstimmen.Gruppe()))
drucken ("Monat: % s" % (Match.Gruppe 1)))
drucken ("Tag: % s" % (Match.Gruppe (2)))

Betreff.finde alle() :

Diese Methode gibt alle Musterübereinstimmungen in einer Zeichenfolge zurück. Die Zeichenfolge wird von Anfang bis Ende durchsucht und die Übereinstimmungen werden in der gefundenen Reihenfolge zurückgegeben.

Syntax : Betreff.findAll (Muster, String)
Rückgabewert
Leere Zeichenfolge ([)]: Das Muster stimmt nicht überein
Liste der Zeichenfolge: Muster übereinstimmt

Beispiel: Regelmäßiger Ausdruck, um Ziffern zu finden

Import Re
String = "" "Bangalore Pincode ist 560066 und
Gulbarga Pincode ist 585101 "" "
regexp = '\ d+' '
Match = re.findAll (regexp, String)
Druck (Übereinstimmung)

Bsp.: Finden Sie die Handynummer (exakte 10 -stellige Nummer) aus dem angegebenen Text

Import Re
String = "" "Bangalore Büro Nummer 1234567891,
Meine Nummer ist 8884278690, Notfallkontakt 3456789123
Ungültige Nummer 898883456 "" "
regexp = '\ d 10'#Dieser reguläre Ausdruck entspricht der genauen 10 -Ziffern -Nummer
Match = re.findAll (regexp, String)
Druck (Übereinstimmung)

Betreff.kompilieren():

Regelmäßige Ausdrücke werden in Musterobjekte zusammengestellt und können bei Methoden verwendet werden. Beispiel für Musterübereinstimmungen, String -Substitutionen.

Ex:

Import Re
e = re.kompilieren ('[a-e]')
drucken (e.findall ("Ich habe um 11 Uhr geboren.M. am 20. Juli 1989 ")))
e = re.compile ('\ d') # \ d entspricht [0-9].
drucken (e.findall ("Ich habe um 11 Uhr geboren.M. am 20. Juli 1989 ")))
p = re.Kompilieren Sie ('\ d+')#Gruppe von einer oder mehreren Ziffern
Druck (p.findall ("Ich habe um 11 Uhr geboren.M. am 20. Juli 1989 ")))

Betreff.Teilt():

Split String basierend auf Vorkommen eines Musters. Wenn das Muster gefunden wird, werden die verbleibenden Zeichen der Zeichenfolge als Teil der resultierenden Liste zurückgegeben. Wir können die maximale Split für eine bestimmte Zeichenfolge angeben.

Syntax - Betreff.Split (Muster, String, MaxSplit = 0)
Rückgabewerte:
Leere Liste ([]): Das Muster stimmt nicht überein
Liste der Zeichenfolge: Muster übereinstimmt

Ex:

Import Re
# '\ W+' entspricht nicht alphanumerischen Zeichen oder einer Gruppe von Zeichen
# Aufgeteilt nach dem Finden 'oder Whitespace "
drucken (re.split ('\ w+', 'gut, besser, am besten'))
drucken (re.split ('\ w+', "Buchbücher")))
# Hier ':', ", ',' sind nicht alphanumerisch, wo die Aufteilung auftritt
drucken (re.Split ('\ W+', geboren am 20. Juli 1989 um 11:00 Uhr ')))
# '\ d+' bezeichnet numerische Zeichen oder eine Gruppe von Zeichen
# Spliting tritt bei '20', '1989', '11', '00' auf
drucken (re.Split ('\ d+', geboren am 20. Juli 1989 um 11:00 Uhr ')))
# Angegebene maximale Aufteilung als 1 angegeben
drucken (re.Split ('\ d+', geboren am 20. Juli 1989 um 11:00 Uhr
AM ', maxSplit = 1))

Betreff.sub ():

Hier ist die 'sub' Bedeutung ein Substring. In dieser Funktion ist der gegebene reguläre Ausdruck (Musterparameter) im angegebenen String (String -Parameter) übereinstimmt. Wenn das Substring gefunden wird, wird es durch einen Reply -Parameter ersetzt.
Geben Sie hier in der Anzahl an, wie oft der Regex ersetzt wird.
Hier können wir das Regex -Flag angeben (Beispiel: RE. FALL IGNORIEREN)

Syntax:- Betreff.Sub (Muster, Repl, String, count = 0, Flags = 0)
Rückgabewert:
Gibt eine neue Zeichenfolge zurück, nachdem er ein Muster ersetzt hat
Gibt die gleiche Zeichenfolge zurück

Ex:

Import Re
# EX: Muster 'lly' entspricht der Zeichenfolge bei "erfolgreich" und "Deckly"
drucken (re.Sub ('lly', '#$', 'Doktortermin erfolgreich in Dely gebucht)))
# EX: Case Hasbeen ignoriert, mit Flag, "lly" zweimal mit der Zeichenfolge übereinstimmt
# Nach dem Matching wird 'Lly' in "erfolgreich" und "Deckly" durch '~*' ersetzt.
drucken (re.sub ('lly', '#$', 'Doktortermin erfolgreich in Dely gebucht, Flags = Re.FALL IGNORIEREN))
# Bsp.
drucken (re.Sub ('lly', '#$', 'Doktortermin erfolgreich in Dely gebucht)))
# EX: As Count = 1, der maximale Ersatz von Zeiten ist 1 1
drucken (re.sub ('lly', '#$', 'Doktortermin erfolgreich in Dely', count = 1, Flags = Re.FALL IGNORIEREN))

Betreff.subn ():

subn () Funktionalität wie sub () in jeder Hinsicht; Der einzige Unterschied besteht darin, die Ausgabe zu liefern. Es gibt ein Tupel zurück, das eine Zählung von insgesamt Ersatz und neuer Zeichenfolge enthält.
Syntax:- Betreff.subn (Muster, repl, String, count = 0, Flags = 0)

Ex:

Import Re
drucken (re.subn ('lly', '#$', 'Doktor -Termin erfolgreich in Dely')))
t = re.subn ('llly', '#$', 'Doktor -Termin erfolgreich in Dely', Flags = Re.FALL IGNORIEREN)
Druck (t)
drucken (len (t))
# Dies ergibt die gleiche Ausgabe wie sub ()
print (t [0])

Betreff.fliehen() :

Dies gibt String mit Backslash '\' vor jedem nicht alphanumerischen Charakter zurück. Dies ist hilfreich, wenn wir mit einer willkürlichen wörtlichen Saite übereinstimmen möchten, in der regelmäßige Ausdrucksmetacharacer enthalten sind.
Syntax:- Betreff.Escape (String)
Ex:

Import Re
# unter dem Fall hat nur ", ist nicht alphanumerisch
drucken (re.Escape ("Arzttermin erfolgreich um 13 Uhr gebucht")))
# unterhalb des Falls hat ", Caret '^', '-', '[]', '\' sind nicht alphanumerisch
drucken (re.Escape ("Er fragte, was das ist [0-9], sagte ich \ t ^numberic Class")))

Abschluss:

Der Artikel behandelte die Dinge, die erforderlich sind, um den regulären Ausdruck in jeder Anwendung zu verstehen. Wir haben verschiedene Methoden und Meta -Charaktere gelernt, die in Python Regexp vorhanden sind.