Python RegEx: re.match(), re.search(), re.findall() mit Beispiel
Was ist ein regulÀrer Ausdruck in Python?
A RegulĂ€rer Ausdruck (RE) In einer Programmiersprache handelt es sich um eine spezielle Textzeichenfolge, die zur Beschreibung eines Suchmusters verwendet wird. Es ist Ă€uĂerst nĂŒtzlich, um Informationen aus Texten wie Code, Dateien, Protokollen, Tabellenkalkulationen oder sogar Dokumenten zu extrahieren.
WÀhrend mit dem Python RegulÀrer Ausdruck: Das Erste, was man erkennen muss, ist, dass alles im Wesentlichen ein Zeichen ist und wir Muster schreiben, die einer bestimmten Zeichenfolge entsprechen, die auch als Zeichenfolge bezeichnet wird. ASCII- oder lateinische Buchstaben sind diejenigen, die Sie auf Ihrer Tastatur finden, und Unicode wird verwendet, um den fremdsprachigen Text abzugleichen. Dazu gehören Ziffern und Satzzeichen sowie alle Sonderzeichen wie $#@!% usw.
Zum Beispiel, a Python Ein regulÀrer Ausdruck könnte ein Programm anweisen, nach einem bestimmten Text in der Zeichenfolge zu suchen und das Ergebnis dann entsprechend auszudrucken. Der Ausdruck kann Folgendes enthalten:
- Textabgleich
- Wiederholung
- Verzweigung
- Musterkomposition etc.
RegulĂ€rer Ausdruck oder RegEx in Python wird als RE bezeichnet (REs, Regexes oder Regex-Muster) werden importiert durch re Modul. Python unterstĂŒtzt regulĂ€re AusdrĂŒcke durch Bibliotheken. RegEx in Python unterstĂŒtzt verschiedene Dinge wie Modifikatoren, Bezeichner und Leerzeichen.
| Identifiers | 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 wie 424,444,545 usw. deklariert. | \n = neue Zeile | . + * ? [] $ ^ () {} | \ |
| \D= alles andere als eine Zahl (eine Nicht-Ziffer) | + = entspricht 1 oder mehr | \s= Leerzeichen | |
| \s = Leerzeichen (Tab, Leerzeichen, Zeilenumbruch usw.) |
? = entspricht 0 oder 1 | \t =Tab | |
| \S= alles andere als ein Leerzeichen | * = 0 oder mehr | \e = Flucht | |
| \w = Buchstaben (Entspricht alphanumerischen Zeichen, einschlieĂlich â_â) | $ entspricht dem Ende einer Zeichenfolge | \r = WagenrĂŒcklauf | |
| \W =alles auĂer Buchstaben ( Entspricht einem nicht alphanumerischen Zeichen auĂer â_â) | ^ Ăbereinstimmung mit dem Anfang einer Zeichenfolge | \f= Formularvorschub | |
| . = alles auĂer Buchstaben (Punkte) | | Entspricht entweder oder x/y | ------ | |
| \b = jedes Zeichen auĂer der neuen Zeile | [] = Bereich oder âVarianzâ | ------ | |
| \. | {x} = diese Menge an vorhergehendem Code | ------ |
Syntax fĂŒr regulĂ€re AusdrĂŒcke (RE).
import re
- Modul âreâ inklusive Python wird hauptsĂ€chlich fĂŒr die Suche und Manipulation von Zeichenfolgen verwendet
- Wird auch hĂ€ufig fĂŒr Webseiten verwendet âKratzenâ (groĂe Datenmengen von Websites extrahieren)
Wir beginnen das Ausdrucks-Tutorial mit dieser einfachen Ăbung, indem wir die AusdrĂŒcke (w+) und (^) verwenden.
Beispiel fĂŒr w+- und ^-Ausdruck
- â^â: Dieser Ausdruck entspricht dem Anfang einer Zeichenfolge
- âw+â: Dieser Ausdruck entspricht dem alphanumerischen Zeichen in der Zeichenfolge
Hier sehen wir eine 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 den Moment konzentrieren wir uns einfach auf den Ausdruck \w+ und \^.
Wenn wir beispielsweise fĂŒr unsere Zeichenfolge âguru99, Bildung macht SpaĂâ den Code mit w+ und ^ ausfĂŒhren, erhalten wir die Ausgabe âguru99â.
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, z. B. [g]
Beispiel fĂŒr einen \s-Ausdruck in der re.split-Funktion
- âsâ: Dieser Ausdruck wird zum Erstellen eines Leerzeichens in der Zeichenfolge verwendet
Um zu verstehen, wie dieser RegEx in Python funktioniert, beginnen wir mit einem einfachen Python RegEx-Beispiel einer Split-Funktion. Im Beispiel haben wir jedes Wort mithilfe der Funktion âre.splitâ aufgeteilt 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. In der Ausgabe gibt es kein âsâ-Alphabet. Dies liegt daran, dass wir â\â aus der Zeichenfolge entfernt haben und âsâ als regulĂ€res Zeichen ausgewertet wird und die Wörter daher ĂŒberall dort aufgeteilt werden, wo âsâ in der Zeichenfolge gefunden wird.
Ebenso gibt es eine Reihe anderer Python regulÀrer Ausdruck, den Sie auf verschiedene Weise verwenden können in Python 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 werden wir die Arten von Methoden sehen, die mit regulĂ€ren AusdrĂŒcken verwendet werden in Python.
Verwendung regulÀrer Ausdrucksmethoden
Das Paket âreâ bietet mehrere Methoden, um Abfragen auf einer Eingabezeichenfolge durchzufĂŒhren. Wir werden die Methoden von re in Python:
- re.match()
- Forschung()
- re.findall()
Hinweis: Basierend auf den regulĂ€ren AusdrĂŒcken, Python bietet zwei verschiedene primitive Operationen. Die Methode match sucht nur am Anfang der Zeichenfolge nach einer Ăbereinstimmung, wĂ€hrend search an einer beliebigen Stelle in der Zeichenfolge nach einer Ăbereinstimmung sucht.
re.match()
re.match() Funktion von re in Python durchsucht das regulĂ€re Ausdrucksmuster und gibt das erste Vorkommen zurĂŒck. Python Die RegEx Match-Methode sucht nur am Anfang der Zeichenfolge nach einer Ăbereinstimmung. Wenn also in der ersten Zeile eine Ăbereinstimmung gefunden wird, gibt sie das Ăbereinstimmungsobjekt zurĂŒck. Wenn jedoch in einer anderen Zeile eine Ăbereinstimmung gefunden wird, Python Die RegEx-Match-Funktion gibt null zurĂŒck.
Betrachten Sie beispielsweise den folgenden Code von Python re.match()-Funktion. Die AusdrĂŒcke âw+â und â\Wâ werden mit den Wörtern ĂŒbereinstimmen, die mit dem Buchstaben âgâ beginnen, und danach wird alles, was nicht mit âgâ beginnt, nicht erkannt. Um die Ăbereinstimmung fĂŒr jedes Element in der Liste oder Zeichenfolge zu ĂŒberprĂŒfen, fĂŒhren wir die For-Schleife in diesem aus. Python re.match() Beispiel.
re.search(): Muster im Text finden
Forschung() Funktion durchsucht das regulĂ€re Ausdrucksmuster und gibt das erste Vorkommen zurĂŒck. Im Gegensatz Python re.match(), es werden alle Zeilen des Eingabestrings ĂŒberprĂŒft. Python Die Funktion re.search() gibt ein Ăbereinstimmungsobjekt zurĂŒck, wenn das Muster gefunden wird, und ânullâ, wenn das Muster nicht gefunden wird.
Wie verwende ich search()?
Um die Funktion search() zu verwenden, mĂŒssen Sie importieren Python re-Modul zuerst und fĂŒhren Sie dann den Code aus. Python Die Funktion re.search() ĂŒbernimmt das zu scannende âMusterâ und den âTextâ aus unserem Hauptstring
Hier suchen wir zum Beispiel nach zwei Literalzeichenfolgen âSoftwaretestsâ âguru99â in einer Textzeichenfolge âSoftware Tests macht SpaĂâ. FĂŒr âSoftwaretestsâ haben wir die Ăbereinstimmung gefunden, daher gibt es die Ausgabe von Python Beispiel fĂŒr re.search(): âEine Ăbereinstimmung gefundenâ. FĂŒr das Wort âguru99â konnten wir jedoch nichts in der Zeichenfolge finden, daher wird die Ausgabe âKeine Ăbereinstimmungâ zurĂŒckgegeben.
re.findall()
finde alle() Das 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 dem angegebenen Muster entspricht. findall() durchlĂ€uft alle Zeilen der Datei und gibt alle nicht ĂŒberlappenden MusterĂŒbereinstimmungen in einem einzigen Schritt zurĂŒck.
So verwenden Sie re.findall() in Python?
Hier haben wir eine Liste von E-Mail-Adressen und möchten, dass alle E-Mail-Adressen aus der Liste abgerufen werden. Wir verwenden die Methode re.findall() in Python. Es werden alle E-Mail-Adressen aus der Liste gefunden.
Hier ist der vollstĂ€ndige Code fĂŒr ein 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 = 'guru99@google.com, careerguru99@hotmail.com, users@yahoomail.com'
emails = re.findall(r'[\w\.-]+@[\w\.-]+', abc)
for email in emails:
print(email)
Python Flags
Viele Python Regex-Methoden und Regex-Funktionen nehmen ein optionales Argument namens Flags an. Diese Flags können die Bedeutung der gegebenen Python Regex-Muster. Um diese zu verstehen, werden wir uns ein oder zwei Beispiele dieser Flags ansehen.
Verschiedene Flaggen in Python Dazu gehören
| Syntax fĂŒr Regex-Flags | Was macht diese Flagge? |
|---|---|
| [re.M] | BerĂŒcksichtigen Sie Anfang/Ende jede Zeile |
| [re.I] | Die GroĂ-/Kleinschreibung wird ignoriert |
| [bez.S] | Machen [ . ] |
| [re.U] | Make { \w,\W,\b,\B} folgt den Unicode-Regeln |
| [re.L] | Lassen Sie {\w,\W,\b,\B} dem Gebietsschema folgen |
| [re.X] | Kommentare in Regex zulassen |
Beispiel fĂŒr re.M- oder Multiline-Flags
Bei mehrzeiligen Mustern entspricht das Zeichen [^] dem ersten Zeichen der Zeichenfolge und dem Anfang jeder Zeile (unmittelbar nach jeder neuen Zeile). WĂ€hrend der Ausdruck â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 des Flags âmehrzeiligâ 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)
- Wir haben die Variable xx fĂŒr die Zeichenfolge âguru99âŠ. careerguru99âŠ.seleniumâ deklariert.
- FĂŒhren Sie den Code aus, ohne mehrzeilige Flags zu verwenden. Die Ausgabe erfolgt nur âgâ aus den Zeilen
- FĂŒhren Sie den Code mit dem Flag âmultilineâ aus. Wenn Sie âk2â drucken, wird die Ausgabe als âgâ, âcâ und âsâ ausgegeben.
- Den Unterschied sehen wir also nach und vor dem HinzufĂŒgen mehrerer Zeilen im obigen Beispiel.
Ebenso können Sie auch andere Python Flags wie re.U (Unicode), re.L (Gebietsschema folgen), re.X (Kommentare zulassen) usw.
Python 2 Beispiel
Die obigen Codes sind Python 3 Beispiele, Wenn Sie in laufen wollen Python 2 Bitte beachten Sie den folgenden Code.
# 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 = 'guru99@google.com, careerguru99@hotmail.com, users@yahoomail.com'
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
Testen Sie Ihre Python Wissen
1. Mit welcher Methode werden alle Vorkommen eines Musters in einer Zeichenfolge gefunden?
- Forschung()
- re.match()
- re.findall()
- erneut teilen()
2. Was stellt die Zeichenklasse \d in regulĂ€ren AusdrĂŒcken dar?
- Beliebige Ziffer (0-9)
- Alle Zeichen, die keine Ziffern sind
- Alle Leerzeichen
- Jeder Buchstabe oder jede Zahl
3. Welche Funktion wĂŒrden Sie verwenden, um eine Zeichenfolge basierend auf Leerzeichen aufzuteilen?
- re.split(r'\s', Zeichenfolge)
- re.findall(r'\w+', Zeichenfolge)
- re.match(r'\s+', Zeichenfolge)
- re.split(r'\w+', Zeichenfolge)
4. Was ist der Hauptunterschied zwischen re.match() und re.search()?
- re.match() sucht nach einem Muster am Anfang einer Zeichenfolge, wÀhrend re.search() nach einem Muster an einer beliebigen Stelle in der Zeichenfolge sucht.
- re.match() gibt alle Ăbereinstimmungen zurĂŒck, wĂ€hrend re.search() die erste Ăbereinstimmung zurĂŒckgibt.
- re.search() ist schneller als re.match().
- Beide Funktionen verhalten sich gleich.
Zusammenfassung
Ein regulÀrer Ausdruck in a Programmiersprache ist eine spezielle Textzeichenfolge, die zur Beschreibung eines Suchmusters verwendet wird. Es umfasst Ziffern und Satzzeichen sowie alle Sonderzeichen wie $#@!% usw. Der Ausdruck kann Literale enthalten
- Textabgleich
- Wiederholung
- Verzweigung
- Musterkomposition etc.
In Python, ein regulÀrer Ausdruck wird als RE bezeichnet (REs, Regexes oder Regex-Muster) werden eingebettet durch Python re-Modul.
- Modul âreâ inklusive Python wird hauptsĂ€chlich fĂŒr die Suche und Manipulation von Zeichenfolgen verwendet
- Wird auch hĂ€ufig fĂŒr das âScrapingâ von Webseiten verwendet (Extrahieren groĂer Datenmengen von Websites).
- Zu den regulÀren Ausdrucksmethoden gehören: re.match(),re.search()& re.findall()
- Andere Python RegEx-Ersetzungsmethoden sind sub() und subn(), die verwendet werden, um ĂŒbereinstimmende Zeichenfolgen in re zu ersetzen.
- Python Flags Viele Python Regex-Methoden und Regex-Funktionen nehmen ein optionales Argument namens Flags an.
- Diese Flags können die Bedeutung des angegebenen Regex-Musters Àndern
- Verschiedene Python In Regex-Methoden verwendete Flags sind re.M, re.I, re.S usw.







