Computer Code Python CCP 19 : expressions régulières 6

in #fr6 years ago (edited)

Table of Contents

  1. Le symbole $ et le symbole ^
  2. Le joker
  3. Le duo de choc
  4. Bilan
  5. Pour aller plus loin

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

Coin Marketplace

STEEM 0.31
TRX 0.34
JST 0.056
BTC 97306.42
ETH 3848.10
SBD 4.17