Computer Code Python CCP 19 : expressions régulières 6
Table of Contents
Le symbole $
et le symbole ^
Le symbole ^
au début d'une regex indique que la correspondance
doit se produire au début du texte cherché.
De la même façon, vous pouvez mettre un symbole $
à la fin de la
regex pour indiquer que la chaîne doit finir avec cette regex.
import re
startWithWhy = re.compile(r'^Why')
print(startWithWhy.search('Why are you learning Python?'))
if startWithWhy.search('Do you know why?') == None:
print("There is no 'Why' at the beginning!")
La regex r'\d$'
correspond aux chaînes finissant avec un chiffre.
import re
finishWithDigit = re.compile(r'\d$')
print(finishWithDigit.search('We are in 2018'))
if finishWithDigit.search('You are twenty one') == None:
print('There is no digit')
La regex r'^\d+$'
correspond aux chaînes qui commencent et
finissent par un nombre.
import re
onlyNumbers = re.compile(r'^\d+$')
print(onlyNumbers.search('1234567890'))
if onlyNumbers.search('12345xyz67890') == None:
print('There are others characters, not only numbers')
if onlyNumbers.search('12 34567890') == None:
print("A space is a character, and it's not a digit")
Le joker
Le .
dans une regex est appelé joker et peut correspondre à
n'importe quel caractère sauf une nouvelle ligne.
import re
atRegex = re.compile(r'.at')
print(atRegex.findall('The fat cat in the hat sat on the flat mat.'))
paraRegex = re.compile(r'para.')
para = """
Les jeux paraolympiques sous la pluie nécessitent des parapluies,
des parachutes et/ou des parapentes et beaucoup de parapharmacie
pour les paraplégiques.
Et un paratonnerre évitera de se faire paralyser les systèmes
parasympathique animé par des paraboles pleines de paramètres.
"""
print(paraRegex.findall(para))
Le duo de choc
import re
nameRegex = re.compile(r'First Name: (.*) Last Name: (.*)')
mo = nameRegex.search('First Name: James Last Name: Bond')
print(mo.group(1))
print(mo.group(2))
Par défaut le combo .*
est en mode glouton.
import re
nongreedyRegex = re.compile(r'<.*?>')
mo = nongreedyRegex.search('<To serve man> for dinner.>')
print(mo.group())
greedyRegex = re.compile(r'<.*>')
mo = greedyRegex.search('<To serve man> for dinner.>')
print(mo.group())
Bilan
Nous avons vu dans ce cours :
- comment chercher une regex en début ou en fin de chaîne de caractère
- comment utiliser le joker
- comment combiner le joker avec la répétition multiple pour
chercher n'importe quel chaîne de caractères
Pour aller plus loin
- La vidéo sur YouTube
- La version HTML sur GitHub
- La version Markdown sur Steemit
- La formation pour apprendre à coder une blockchain avec Python :
ACBP - La formation pour découvrir les technologies blockchain : CDBSSR
- La formation pour devenir full stack developer : FSD
- Le pack avec un paiement en 10 fois :
https://cours-laurent.systeme.io/pack-3-formations-10-fois