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
Expressions régulières
Les expressions régulières (parfois abrégées en regexp, regex ou re) sont un outil pour correspondre à des motifs dans le texte. En Python, nous avons le module re. Les applications des expressions régulières sont très variées, mais elles sont assez complexes, donc lorsque vous envisagez d'utiliser une regex pour une tâche donnée, réfléchissez aux alternatives et recourez aux regex en dernier recours.
Un exemple de regex est r"^(From|To|Cc).*[email protected]"
. Maintenant, une explication : l'accent circonflexe ^
correspond au texte au début d'une ligne. Le groupe suivant, la partie avec (From|To|Cc)
, signifie que la ligne doit commencer par un des mots séparés par le pipe |
. C'est ce qu'on appelle l'opérateur OU, et la regex correspondra si la ligne commence par l'un des mots du groupe. Le .*?
signifie de manière non-gourmande correspondre à n'importe quel nombre de caractères, sauf le caractère de nouvelle ligne \n
. La partie non-gourmande signifie correspondre au plus petit nombre de répétitions possibles. Le caractère .
signifie n'importe quel caractère sauf une nouvelle ligne, le *
signifie répéter 0 ou plusieurs fois, et le caractère ?
rend cela non-gourmand.
Ainsi, les lignes suivantes seraient correspondantes à cette regex :
From: [email protected]
To: !asp]<,. [email protected]
Une référence complète pour la syntaxe re est disponible dans les docs python.
Comme un exemple de regex de correspondance d'email « appropriée » (comme celle dans l'exercice), voir ici
# 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!