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

Python RegEx:re.match(), re.search(), re.findall() mit Beispiel

Was ist ein regulärer Ausdruck in Python?

Ein regulärer Ausdruck (RE) in einer Programmiersprache ist eine spezielle Textzeichenfolge, die zur Beschreibung eines Suchmusters verwendet wird. Es ist äußerst nützlich, um Informationen aus Text wie Code, Dateien, Protokollen, Tabellenkalkulationen oder sogar Dokumenten zu extrahieren.

Bei der Verwendung des regulären Python-Ausdrucks ist das erste, was zu erkennen ist, dass alles im Wesentlichen ein Zeichen ist, und wir schreiben Muster, um einer bestimmten Zeichenfolge zu entsprechen, die auch als Zeichenfolge bezeichnet wird. Ascii- oder lateinische Buchstaben sind diejenigen, die sich auf Ihren Tastaturen befinden, und Unicode wird verwendet, um den fremdsprachigen Text abzugleichen. Es enthält Ziffern und Satzzeichen sowie alle Sonderzeichen wie $#@!% usw.

In diesem Python-RegEx-Tutorial lernen wir-

Beispielsweise könnte ein regulärer Python-Ausdruck ein Programm anweisen, nach einem bestimmten Text in der Zeichenfolge zu suchen und das Ergebnis dann entsprechend auszudrucken. Ausdruck kann enthalten

Reguläre Ausdrücke oder RegEx werden in Python als RE bezeichnet (REs, Regexes oder Regex-Muster) werden über re module importiert . Python unterstützt reguläre Ausdrücke über Bibliotheken. RegEx in Python unterstützt verschiedene Dinge wie Modifikatoren, Bezeichner und Leerzeichen .

Identifikatoren Modifikatoren Leerzeichen Flucht erforderlich
\d=eine beliebige Zahl (eine Ziffer) \d stellt eine Ziffer dar. Beispiel:\d{1,5} es wird eine Ziffer zwischen 1,5 deklarieren, wie 424.444.545 usw. \n =neue Zeile . + * ? [] $ ^ () {} | \
\D=alles andere als eine Zahl (keine Ziffer) + =stimmt mit 1 oder mehr überein \s=Leerzeichen
\s =Leerzeichen
(Tab, Leerzeichen, Zeilenumbruch usw.)
? =entspricht 0 oder 1 \t =tab
\S=alles außer einem Leerzeichen * =0 oder mehr \e =Escape
\w =Buchstaben ( Übereinstimmung mit alphanumerischen Zeichen, einschließlich „_“) $ entspricht dem Ende einer Zeichenfolge \r =Wagenrücklauf
\W =alles außer Buchstaben (entspricht einem nicht-alphanumerischen Zeichen außer „_“) ^ Match-Anfang einer Zeichenfolge \f=Formularvorschub
. =alles außer Buchstaben (Punkte) | entspricht entweder oder x/y —————–
\b =beliebiges Zeichen außer Zeilenumbruch [] =Bereich oder „Varianz“ —————-
\. {x} =diese Menge des vorhergehenden Codes —————–

Syntax für reguläre Ausdrücke (RE)

import re

Wir beginnen das Ausdrucks-Tutorial mit dieser einfachen Übung, indem wir die Ausdrücke (w+) und (^).

verwenden

Beispiel für w+ und ^ Ausdruck

Hier sehen wir ein Python-RegEx-Beispiel, wie wir w+ und ^-Ausdrücke in unserem Code verwenden können. Wir behandeln die Funktion re.findall() in Python später in diesem Tutorial, aber für eine Weile konzentrieren wir uns einfach auf \w+ und \^ expression.

Wenn wir beispielsweise für unseren String „guru99, Bildung macht Spaß“ den Code mit w+ und ^ ausführen, wird die Ausgabe „guru99“ ausgegeben.

import re
xx = "guru99,education is fun"
r1 = re.findall(r"^\w+",xx)
print(r1)

Denken Sie daran, wenn Sie das +Zeichen aus dem w+ entfernen, ändert sich die Ausgabe und es wird nur das erste Zeichen des ersten Buchstabens ausgegeben, d. h. [g]

Beispiel eines \s-Ausdrucks in der re.split-Funktion

Um zu verstehen, wie dieser RegEx in Python funktioniert, beginnen wir mit einem einfachen Python-RegEx-Beispiel einer Split-Funktion. In dem Beispiel haben wir jedes Wort mit der Funktion „re.split“ geteilt und gleichzeitig den Ausdruck \s verwendet, der es ermöglicht, jedes Wort in der Zeichenfolge separat zu analysieren.

Wenn Sie diesen Code ausführen, erhalten Sie die Ausgabe [‚we‘, ‚are‘, ‚splitting‘, ‚the‘, ‚words‘].

Sehen wir uns nun an, was passiert, wenn Sie „\“ aus s entfernen. Es gibt kein 's'-Alphabet in der Ausgabe, das liegt daran, dass wir '\' aus der Zeichenfolge entfernt haben und es "s" als reguläres Zeichen auswertet und somit die Wörter spaltet, wo immer es "s" in der Zeichenfolge findet.

In ähnlicher Weise gibt es eine Reihe anderer regulärer Python-Ausdrücke, die Sie auf verschiedene Weise in Python verwenden können, wie \d, \D, $, \., \b usw.

Hier ist der vollständige Code

import re
xx = "guru99,education is fun"
r1 = re.findall(r"^\w+", xx)
print((re.split(r'\s','we are splitting the words')))
print((re.split(r's','split the words')))

Als nächstes sehen wir uns die Arten von Methoden an, die mit regulären Ausdrücken in Python verwendet werden.

Verwendung regulärer Ausdrucksmethoden

Das „re“-Paket bietet mehrere Methoden, um tatsächlich Abfragen für eine Eingabezeichenfolge durchzuführen. Wir werden die Methoden von re in Python sehen:

Hinweis :Basierend auf den regulären Ausdrücken bietet Python zwei verschiedene primitive Operationen an. Die Match-Methode sucht nur am Anfang der Zeichenfolge nach einer Übereinstimmung, während die Suche irgendwo in der Zeichenfolge nach einer Übereinstimmung sucht.

re.match()

re.match() Die Funktion von re in Python durchsucht das reguläre Ausdrucksmuster und gibt das erste Vorkommen zurück. Die Python-RegEx-Match-Methode sucht nur am Anfang der Zeichenfolge nach einer Übereinstimmung. Wenn also in der ersten Zeile eine Übereinstimmung gefunden wird, wird das Übereinstimmungsobjekt zurückgegeben. Wenn jedoch eine Übereinstimmung in einer anderen Zeile gefunden wird, gibt die Python-RegEx-Match-Funktion null zurück.

Betrachten Sie beispielsweise den folgenden Code der Python-Funktion re.match(). Der Ausdruck „w+“ und „\W“ stimmt mit den Wörtern überein, die mit dem Buchstaben „g“ beginnen, und danach wird alles, was nicht mit „g“ beginnt, nicht identifiziert. Um die Übereinstimmung für jedes Element in der Liste oder Zeichenfolge zu überprüfen, führen wir die For-Schleife in diesem Python-Beispiel re.match() aus.

re.search():Muster im Text finden

re.search() Die Funktion durchsucht das reguläre Ausdrucksmuster und gibt das erste Vorkommen zurück. Im Gegensatz zu Python re.match() werden alle Zeilen der Eingabezeichenfolge überprüft. Die Python-Funktion re.search() gibt ein Übereinstimmungsobjekt zurück, wenn das Muster gefunden wird, und „null“, wenn das Muster nicht gefunden wird

Wie benutzt man search()?

Um die search()-Funktion zu verwenden, müssen Sie zuerst das Python re-Modul importieren und dann den Code ausführen. Die Python-Funktion re.search() nimmt das „Muster“ und den „Text“ zum Scannen aus unserer Hauptzeichenfolge

Hier suchen wir zum Beispiel nach zwei wörtlichen Zeichenfolgen „Software-Testen“ „guru99“ in einer Textzeichenfolge „Software-Testen macht Spaß“. Für „Software-Tests“ haben wir die Übereinstimmung gefunden, daher gibt es die Ausgabe von Python re.search() Beispiel als „eine Übereinstimmung gefunden“ zurück, während wir für das Wort „guru99“ nicht in der Zeichenfolge finden konnten, daher wird die Ausgabe als „Keine Übereinstimmung “.

re.findall()

findall() -Modul wird verwendet, um nach „allen“ Vorkommen zu suchen, die einem bestimmten Muster entsprechen. Im Gegensatz dazu gibt das Modul search() nur das erste Vorkommen zurück, das mit dem angegebenen Muster übereinstimmt. findall() durchläuft alle Zeilen der Datei und gibt alle nicht überlappenden Musterübereinstimmungen in einem einzigen Schritt zurück.

Wie verwende ich re.findall() in Python?

Hier haben wir eine Liste von E-Mail-Adressen, und wir wollen, dass alle E-Mail-Adressen aus der Liste abgerufen werden, wir verwenden die Methode re.findall() in Python. Es findet alle E-Mail-Adressen aus der Liste.

Hier ist der vollständige Code für das Beispiel von re.findall()

import re

list = ["guru99 get", "guru99 give", "guru Selenium"]
for element in list:
    z = re.match("(g\w+)\W(g\w+)", element)
if z:
    print((z.groups()))
    
patterns = ['software testing', 'guru99']
text = 'software testing is fun?'
for pattern in patterns:
    print('Looking for "%s" in "%s" ->' % (pattern, text), end=' ')
    if re.search(pattern, text):
        print('found a match!')
else:
    print('no match')
abc = '[email protected], [email protected], [email protected]'
emails = re.findall(r'[\w\.-]+@[\w\.-]+', abc)
for email in emails:
    print(email)

Python-Flags

Viele Python-Regex-Methoden und Regex-Funktionen verwenden ein optionales Argument namens Flags. Diese Flags können die Bedeutung des angegebenen Python-Regex-Musters ändern. Um diese zu verstehen, werden wir ein oder zwei Beispiele dieser Flags sehen.

Verschiedene in Python verwendete Flags umfassen

Syntax für Regex-Flags Was macht dieses Flag
[re.M] Anfang/Ende jede Zeile berücksichtigen
[bzgl.] Groß-/Kleinschreibung wird ignoriert
[re.S] Machen Sie [ . ]
[re.U] Make { \w,\W,\b,\B} folgt den Unicode-Regeln
[re.L] Lassen Sie {\w,\W,\b,\B} dem Gebietsschema folgen
[re.X] Kommentar in Regex zulassen

Beispiel für re.M oder Multiline Flags

Bei mehrzeiligen Zeichen entspricht das Musterzeichen [^] dem ersten Zeichen der Zeichenfolge und dem Anfang jeder Zeile (das unmittelbar nach jedem Zeilenumbruch folgt). Während der Ausdruck klein „w“ verwendet wird, um das Leerzeichen mit Zeichen zu markieren. Wenn Sie den Code ausführen, gibt die erste Variable „k1“ nur das Zeichen „g“ für das Wort „guru99“ aus, während beim Hinzufügen eines mehrzeiligen Flags die ersten Zeichen aller Elemente in der Zeichenfolge abgerufen werden.

Hier ist der Code

import re
xx = """guru99 
careerguru99	
selenium"""
k1 = re.findall(r"^\w", xx)
k2 = re.findall(r"^\w", xx, re.MULTILINE)
print(k1)
print(k2)

Ebenso können Sie auch andere Python-Flags wie re.U (Unicode), re.L (Gebietsschema folgen), re.X (Kommentar zulassen) usw. verwenden.

Python 2-Beispiel

Die obigen Codes sind Beispiele für Python 3. Wenn Sie Python 2 ausführen möchten, ziehen Sie bitte den folgenden Code in Betracht.

# Example of w+ and ^ Expression
import re
xx = "guru99,education is fun"
r1 = re.findall(r"^\w+",xx)
print r1

# Example of \s expression in re.split function
import re
xx = "guru99,education is fun"
r1 = re.findall(r"^\w+", xx)
print (re.split(r'\s','we are splitting the words'))
print (re.split(r's','split the words'))

# Using re.findall for text
import re

list = ["guru99 get", "guru99 give", "guru Selenium"]
for element in list:
    z = re.match("(g\w+)\W(g\w+)", element)
if z:
    print(z.groups())
    
patterns = ['software testing', 'guru99']
text = 'software testing is fun?'
for pattern in patterns:
    print 'Looking for "%s" in "%s" ->' % (pattern, text),
    if re.search(pattern, text):
        print 'found a match!'
else:
    print 'no match'
abc = '[email protected], [email protected], [email protected]'
emails = re.findall(r'[\w\.-]+@[\w\.-]+', abc)
for email in emails:
    print email

# Example of re.M or Multiline Flags
import re
xx = """guru99 
careerguru99	
selenium"""
k1 = re.findall(r"^\w", xx)
k2 = re.findall(r"^\w", xx, re.MULTILINE)
print k1
print k2

Zusammenfassung

Ein regulärer Ausdruck in einer Programmiersprache ist eine spezielle Textzeichenfolge, die zur Beschreibung eines Suchmusters verwendet wird. Er enthält Ziffern und Satzzeichen sowie alle Sonderzeichen wie $#@!% usw. Ausdruck kann Literal enthalten

In Python wird ein regulärer Ausdruck als RE bezeichnet (REs, Regexes oder Regex-Muster) werden durch das Python-Re-Modul eingebettet.


Python

  1. Python String strip() Funktion mit BEISPIEL
  2. Python String count() mit BEISPIELE
  3. Python String format() Erklären Sie mit BEISPIELE
  4. Länge der Python-Zeichenfolge | len() Methode Beispiel
  5. Python String find() Methode mit Beispielen
  6. Python-Funktion round() mit BEISPIELE
  7. Python map() Funktion mit BEISPIELE
  8. Python Timeit() mit Beispielen
  9. Python-Zähler in Sammlungen mit Beispiel
  10. Python List count() mit BEISPIELE