Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Python

Python - Reguläre Ausdrücke

Vorherige SeiteNächste Seite

Ein regulärer Ausdruck ist eine spezielle Zeichenfolge, die Ihnen hilft, andere Zeichenfolgen oder Gruppen von Zeichenfolgen abzugleichen oder zu finden, indem eine spezielle Syntax verwendet wird, die in einem Muster enthalten ist. Reguläre Ausdrücke sind in der UNIX-Welt weit verbreitet.

Das Python-Modul re bietet volle Unterstützung für Perl-ähnliche reguläre Ausdrücke in Python. Das re-Modul löst die Ausnahme re.error aus, wenn beim Kompilieren oder Verwenden eines regulären Ausdrucks ein Fehler auftritt.

Wir würden zwei wichtige Funktionen behandeln, die zur Behandlung regulärer Ausdrücke verwendet werden. Aber eine Kleinigkeit vorweg:Es gibt verschiedene Zeichen, die eine besondere Bedeutung haben, wenn sie in regulären Ausdrücken verwendet werden. Um Verwirrung beim Umgang mit regulären Ausdrücken zu vermeiden, würden wir Raw Strings als r'expression' verwenden .

Das Spiel Funktion

Diese Funktion versucht, RE Muster abzugleichen zu String mit optionalen Flags .

Hier ist die Syntax für diese Funktion −

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

Hier ist die Beschreibung der Parameter −

Sr.Nr. Parameter &Beschreibung
1

Muster

Dies ist der zu vergleichende reguläre Ausdruck.

2

Zeichenfolge

Dies ist die Zeichenkette, die nach dem Muster am Anfang der Zeichenkette gesucht werden würde.

3

Flaggen

Sie können verschiedene Flags mit bitweisem ODER (|) angeben. Dies sind Modifikatoren, die in der folgenden Tabelle aufgeführt sind.

Das re.match Funktion gibt eine Übereinstimmung zurück Objekt bei Erfolg, Keine auf Versagen. Wir verwenden group(num) oder Gruppen() Funktion von Match Objekt, um einen übereinstimmenden Ausdruck zu erhalten.

Sr.No. Objektmethode und -beschreibung abgleichen
1

Gruppe(num=0)

Diese Methode gibt eine vollständige Übereinstimmung (oder eine bestimmte Untergruppennummer) zurück

2

Gruppen()

Diese Methode gibt alle übereinstimmenden Untergruppen in einem Tupel zurück (leer, wenn es keine gibt)

Beispiel

Live-Demo
#!/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!!"

Wenn der obige Code ausgeführt wird, erzeugt er das folgende Ergebnis −

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

Die Suche Funktion

Diese Funktion sucht nach dem ersten Vorkommen von RE Muster innerhalb von Zeichenfolge mit optionalen Flags .

Hier ist die Syntax für diese Funktion −

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

Hier ist die Beschreibung der Parameter −

Sr.No. Parameter &Beschreibung
1

Muster

Dies ist der zu vergleichende reguläre Ausdruck.

2

Zeichenfolge

Dies ist die Zeichenfolge, die durchsucht werden würde, um mit dem Muster irgendwo in der Zeichenfolge übereinzustimmen.

3

Flaggen

Sie können verschiedene Flags mit bitweisem ODER (|) angeben. Dies sind Modifikatoren, die in der folgenden Tabelle aufgeführt sind.

Die Forschung Funktion gibt eine Übereinstimmung zurück Objekt bei Erfolg, keine auf Versagen. Wir verwenden group(num) oder Gruppen() Funktion von Match Objekt, um einen übereinstimmenden Ausdruck zu erhalten.

Sr.Nr. Match-Objektmethoden und -beschreibung
1

Gruppe(num=0)

Diese Methode gibt eine vollständige Übereinstimmung (oder eine bestimmte Untergruppennummer) zurück

2

Gruppen()

Diese Methode gibt alle übereinstimmenden Untergruppen in einem Tupel zurück (leer, wenn es keine gibt)

Beispiel

Live-Demo
#!/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!!"

Wenn der obige Code ausgeführt wird, erzeugt er das folgende Ergebnis −

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

Matching versus Suche

Python bietet zwei verschiedene primitive Operationen basierend auf regulären Ausdrücken:match sucht nur am Anfang des Strings nach einer Übereinstimmung, während search sucht irgendwo im String nach einer Übereinstimmung (das macht Perl standardmäßig).

Beispiel

Live-Demo
#!/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!!"

searchObj = re.search( r'dogs', line, re.M|re.I)
if searchObj:
   print "search --> searchObj.group() : ", searchObj.group()
else:
   print "Nothing found!!"

Wenn der obige Code ausgeführt wird, erzeugt er das folgende Ergebnis −

No match!!
search --> searchObj.group() :  dogs

Suchen und Ersetzen

Einer der wichtigsten re Methoden, die reguläre Ausdrücke verwenden, ist sub .

Syntax

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

Diese Methode ersetzt alle Vorkommen des RE Musters in Zeichenfolge mit ersetzen , wobei alle Vorkommen ersetzt werden, außer max bereitgestellt. Diese Methode gibt eine modifizierte Zeichenfolge zurück.

Beispiel

Live-Demo
#!/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

Wenn der obige Code ausgeführt wird, erzeugt er das folgende Ergebnis −

Phone Num :  2004-959-559
Phone Num :  2004959559

Modifikatoren für reguläre Ausdrücke:Options-Flags

Reguläre Ausdrucksliterale können einen optionalen Modifikator enthalten, um verschiedene Aspekte des Abgleichs zu steuern. Die Modifikatoren werden als optionales Flag angegeben. Sie können mehrere Modifikatoren mit exklusivem ODER (|) angeben, wie zuvor gezeigt, und können durch einen dieser Modifikatoren −

dargestellt werden
Sr.No. Modifizierer &Beschreibung
1

re.Ich

Führt einen Vergleich ohne Berücksichtigung der Groß-/Kleinschreibung durch.

2

re.L

Interpretiert Wörter gemäß dem aktuellen Gebietsschema. Diese Interpretation wirkt sich auf die alphabetische Gruppe (\w und \W) sowie auf das Verhalten der Wortgrenzen (\b und \B) aus.

3

re.M

Sorgt dafür, dass $ mit dem Ende einer Zeile übereinstimmt (nicht nur mit dem Ende des Strings) und mit ^ mit dem Beginn einer beliebigen Zeile übereinstimmt (nicht nur mit dem Beginn des Strings).

4

re.S

Sorgt dafür, dass ein Punkt (Punkt) mit einem beliebigen Zeichen übereinstimmt, einschließlich eines Zeilenumbruchs.

5

re.U

Interpretiert Buchstaben gemäß dem Unicode-Zeichensatz. Dieses Flag beeinflusst das Verhalten von \w, \W, \b, \B.

6

re.X

Erlaubt eine "niedlichere" Syntax für reguläre Ausdrücke. Es ignoriert Leerzeichen (außer innerhalb eines Satzes [] oder wenn es durch einen Backslash maskiert wird) und behandelt nicht maskiertes # als Kommentarmarkierung.

Muster für reguläre Ausdrücke

Außer Steuerzeichen (+ ? . * ^ $ ( ) [ ] { } | \) , alle Zeichen passen zu sich selbst. Sie können ein Steuerzeichen maskieren, indem Sie ihm einen umgekehrten Schrägstrich voranstellen.

Die folgende Tabelle listet die Syntax für reguläre Ausdrücke auf, die in Python verfügbar ist −

Sr.Nr. Muster &Beschreibung
1

^

Entspricht dem Zeilenanfang.

2

$

Entspricht dem Zeilenende.

3

.

Stimmt mit jedem einzelnen Zeichen außer Newline überein. Die Verwendung der Option m ermöglicht es auch, Zeilenumbrüche zu finden.

4

[...]

Entspricht jedem einzelnen Zeichen in Klammern.

5

[^...]

Entspricht jedem einzelnen Zeichen, das nicht in Klammern steht

6

re*

Entspricht 0 oder mehr Vorkommen des vorhergehenden Ausdrucks.

7

wieder+

Entspricht mindestens einem Vorkommen des vorhergehenden Ausdrucks.

8

re?

Stimmt mit 0 oder 1 Vorkommen des vorhergehenden Ausdrucks überein.

9

re{ n}

Entspricht genau n Vorkommen des vorhergehenden Ausdrucks.

10

re{ n,}

Stimmt mit n oder mehr Vorkommen des vorhergehenden Ausdrucks überein.

11

re{ n, m}

Entspricht mindestens n und höchstens m Vorkommen des vorhergehenden Ausdrucks.

12

a| b

Entspricht entweder a oder b.

13

(wieder)

Gruppiert reguläre Ausdrücke und merkt sich übereinstimmenden Text.

14

(?imx)

Schaltet vorübergehend die i-, m- oder x-Optionen innerhalb eines regulären Ausdrucks ein. Wenn in Klammern angegeben, ist nur dieser Bereich betroffen.

15

(?-imx)

Schaltet die i-, m- oder x-Optionen innerhalb eines regulären Ausdrucks vorübergehend aus. Wenn in Klammern angegeben, ist nur dieser Bereich betroffen.

16

(?:re)

Gruppiert reguläre Ausdrücke, ohne übereinstimmenden Text zu speichern.

17

(?imx:re)

Schaltet vorübergehend die i-, m- oder x-Optionen in Klammern ein.

18

(?-imx:re)

Schaltet vorübergehend die i-, m- oder x-Optionen in Klammern aus.

19

(?#...)

Kommentar.

20

(?=re)

Gibt die Position mithilfe eines Musters an. Hat keinen Bereich.

21

(?! wieder)

Gibt die Position mit Musternegation an. Hat keinen Bereich.

22

(?> wieder)

Entspricht einem unabhängigen Muster ohne Backtracking.

23

\w

Entspricht Wortzeichen.

24

\W

Entspricht Nichtwortzeichen.

25

\s

Stimmt mit Leerzeichen überein. Entspricht [\t\n\r\f].

26

\S

Stimmt mit Nicht-Leerzeichen überein.

27

\d

Entspricht Ziffern. Entspricht [0-9].

28

\D

Entspricht Nichtziffern.

29

\A

Entspricht dem Anfang der Zeichenfolge.

30

\Z

Entspricht dem Ende der Zeichenfolge. Wenn ein Zeilenumbruch vorhanden ist, passt er direkt vor Zeilenumbruch.

31

\z

Entspricht dem Ende der Zeichenfolge.

32

\G

Spielt den Punkt ab, an dem das letzte Spiel endete.

33

\b

Entspricht Wortgrenzen außerhalb von Klammern. Entspricht der Rücktaste (0x08) innerhalb von Klammern.

34

\B

Stimmt mit Nichtwortgrenzen überein.

35

\n, \t usw.

Entspricht Zeilenumbrüchen, Wagenrückläufen, Tabulatoren usw.

36

\1...\9

Entspricht dem n-ten gruppierten Teilausdruck.

37

\10

Stimmt mit dem n-ten gruppierten Unterausdruck überein, wenn er bereits übereinstimmt. Bezieht sich ansonsten auf die oktale Darstellung eines Zeichencodes.

Beispiele für reguläre Ausdrücke

Buchstäbliche Zeichen

Sr.Nr. Beispiel &Beschreibung
1

Python

Übereinstimmung mit „python“.

Zeichenklassen

Sr.Nr. Beispiel &Beschreibung
1

[Pp]ython

Übereinstimmung mit „Python“ oder „python“

2

reibe[ye]

Übereinstimmung mit „ruby“ oder „rube“

3

[aeiou]

Entspricht einem beliebigen Kleinbuchstaben

4

[0-9]

Passen Sie jede Ziffer an; dasselbe wie [0123456789]

5

[a-z]

Übereinstimmung mit einem ASCII-Kleinbuchstaben

6

[A–Z]

Entspricht einem beliebigen ASCII-Großbuchstaben

7

[a-zA-Z0-9]

Übereinstimmung mit einem der oben genannten

8

[^aeiou]

Übereinstimmung mit irgendetwas anderem als einem kleingeschriebenen Vokal

9

[^0-9]

Übereinstimmung mit irgendetwas anderem als einer Ziffer

Sonderzeichenklassen

Sr.Nr. Beispiel &Beschreibung
1

.

Entspricht jedem Zeichen außer Newline

2

\d

Übereinstimmung mit einer Ziffer:[0-9]

3

\D

Übereinstimmung mit einer Nichtziffer:[^0-9]

4

\s

Übereinstimmung mit einem Leerzeichen:[ \t\r\n\f]

5

\S

Übereinstimmung mit Nicht-Leerzeichen:[^ \t\r\n\f]

6

\w

Übereinstimmung mit einem einzelnen Wortzeichen:[A-Za-z0-9_]

7

\W

Übereinstimmung mit einem Nichtwortzeichen:[^A-Za-z0-9_]

Wiederholungsfälle

Sr.Nr. Beispiel &Beschreibung
1

Rubin?

Passen Sie "rub" oder "ruby" an:das y ist optional

2

Rubin*

Übereinstimmung mit „rub“ plus 0 oder mehr ys

3

Rubin+

Übereinstimmung mit „rub“ plus 1 oder mehr ys

4

\d{3}

Passen Sie genau 3 Ziffern an

5

\d{3,}

Übereinstimmung mit 3 oder mehr Ziffern

6

\d{3,5}

Übereinstimmung mit 3, 4 oder 5 Ziffern

Nicht gierige Wiederholung

Dies entspricht der kleinsten Anzahl von Wiederholungen −

Sr.No. Beispiel &Beschreibung
1

<.*>

Gierige Wiederholung:passt auf "perl>"

2

<.*?>

Nongreedy:passt auf „“ in „perl>“

Gruppierung mit Klammern

Sr.Nr. Beispiel &Beschreibung
1

\D\d+

Keine Gruppe:+ wiederholt \d

2

(\D\d)+

Gruppiert:+ wiederholt \D\d Paar

3

([Pp]ython(, )?)+

Übereinstimmung mit „Python“, „Python, python, python“ usw.

Rückverweise

Dies stimmt erneut mit einer zuvor übereinstimmenden Gruppe überein −

Sr.No. Beispiel &Beschreibung
1

([Pp])ython&\1ails

Match python&pails oder Python&Pails

2

(['"])[^\1]*\1

Zeichenfolge in einfachen oder doppelten Anführungszeichen. \1 stimmt mit dem überein, was die erste Gruppe gefunden hat. \2 stimmt mit dem überein, was die zweite Gruppe gefunden hat, usw.

Alternativen

Sr.No. Beispiel &Beschreibung
1

python|perl

Übereinstimmung mit „python“ oder „perl“

2

rub(y|le))

Übereinstimmung mit „ruby“ oder „ruble“

3

Python(!+|\?)

"Python" gefolgt von einem oder mehreren ! oder ein ?

Anker

Hier muss die Übereinstimmungsposition angegeben werden.

Sr.Nr. Beispiel &Beschreibung
1

^Python

Übereinstimmung mit „Python“ am Anfang einer Zeichenfolge oder internen Zeile

2

Python$

Übereinstimmung mit „Python“ am Ende einer Zeichenfolge oder Zeile

3

\APython

Übereinstimmung mit „Python“ am Anfang einer Zeichenfolge

4

Python\Z

Übereinstimmung mit „Python“ am Ende einer Zeichenfolge

5

\bPython\b

Übereinstimmung mit „Python“ an einer Wortgrenze

6

\brub\B

\B ist eine Nichtwortgrenze:passt "rub" in "rube" und "ruby", aber nicht alleine

7

Python(?=!)

Entspricht „Python“, wenn ein Ausrufezeichen folgt.

8

Python(?!!)

Übereinstimmung mit „Python“, falls kein Ausrufezeichen folgt.

Spezielle Syntax mit Klammern

Sr.No. Beispiel &Beschreibung
1

R(?#Kommentar)

Entspricht "R". Alles andere ist ein Kommentar

2

R(?i)uby

Groß-/Kleinschreibung beim Abgleich von "uby"

3

R(?i:uby)

Wie oben

4

rub(?:y|le))

Nur gruppieren ohne \1 Rückverweis

zu erstellen

Python

  1. Python-Datentypen
  2. Python-Operatoren
  3. Python-pass-Anweisung
  4. Python-Funktionsargumente
  5. Python-Wörterbuch
  6. Python-Iteratoren
  7. Python-Schließungen
  8. Python-RegEx
  9. Python-Datetime
  10. Java - Reguläre Ausdrücke