Get started learning Python with DataCamp's free Intro to Python tutorial. Learn Data Science by completing interactive coding challenges and watching videos by expert instructors. Start Now!
This site is generously supported by DataCamp. DataCamp offers online interactive Python Tutorials for Data Science. Join 11 million other learners and get started learning Python for data science today!
Good news! You can save 25% off your Datacamp annual subscription with the code LEARNPYTHON23ALE25 - Click here to redeem your discount
Reguläre Ausdrücke
Regular Expressions (manchmal abgekürzt als regexp, regex oder re) sind ein Werkzeug zum Abgleichen von Mustern in Texten. In Python haben wir das re-Modul. Die Anwendungen für reguläre Ausdrücke sind weit verbreitet, aber sie sind ziemlich komplex, daher sollte man beim Überlegen, ob man einen regulären Ausdruck für eine bestimmte Aufgabe verwenden möchte, zunächst andere Alternativen in Betracht ziehen und reguläre Ausdrücke als letzten Ausweg nutzen.
Ein Beispiel für einen regulären Ausdruck ist r"^(From|To|Cc).*[email protected]"
. Nun zur Erklärung: das Caret ^
passt auf Text am Anfang einer Zeile. Die folgende Gruppe, der Teil mit (From|To|Cc)
, bedeutet, dass die Zeile mit einem der Worte beginnen muss, die durch das Pipe |
getrennt sind. Das wird als OR-Operator bezeichnet, und der reguläre Ausdruck wird passen, wenn die Zeile mit einem der Wörter in der Gruppe beginnt. Das .*?
bedeutet, so wenig wie möglich eine beliebige Anzahl von Zeichen abzugleichen, außer dem Zeilenumbruch \n
-Zeichen. Der Teil "ungierig" bedeutet, so wenige Wiederholungen wie möglich abzugleichen. Das Zeichen .
steht für jedes Zeichen außer einem Zeilenumbruch, das *
für die Wiederholung 0 oder mehr Mal, und das ?
-Zeichen macht es un-gierig.
Die folgenden Zeilen würden von diesem regulären Ausdruck übereinstimmen:
From: [email protected]
To: !asp]<,. [email protected]
Eine vollständige Referenz zur re-Syntax ist in den Python-Dokumentationen verfügbar.
Als Beispiel eines "richtigen" E-Mail-abstimmenden regulären Ausdrucks (wie der im Übungsteil), siehe dies.
# Example:
import re
pattern = re.compile(r"\[(on|off)\]") # Slight optimization
print(re.search(pattern, "Mono: Playback 65 [75%] [-16.50dB] [on]"))
# Returns a Match object!
print(re.search(pattern, "Nada...:-("))
# Doesn't return anything.
# End Example
# Exercise: make a regular expression that will match an email
def test_email(your_pattern):
pattern = re.compile(your_pattern)
emails = ["[email protected]", "[email protected]", "wha.t.`1an?ug{}[email protected]"]
for email in emails:
if not re.match(pattern, email):
print("You failed to match %s" % (email))
elif not your_pattern:
print("Forgot to enter a pattern!")
else:
print("Pass")
pattern = r"" # Your pattern here!
test_email(pattern)
# Exercise: make a regular expression that will match an email
import re
def test_email(your_pattern):
pattern = re.compile(your_pattern)
emails = ["[email protected]", "[email protected]", "wha.t.`1an?ug{}[email protected]"]
for email in emails:
if not re.match(pattern, email):
print("You failed to match %s" % (email))
elif not your_pattern:
print("Forgot to enter a pattern!")
else:
print("Pass")
# Your pattern here!
pattern = r"\"?([-a-zA-Z0-9.`?{}]+@\w+\.\w+)\"?"
test_email(pattern)
test_output_contains("Pass")
success_msg("Great work!")
This site is generously supported by DataCamp. DataCamp offers online interactive Python Tutorials for Data Science. Join over a million other learners and get started learning Python for data science today!