Computer Code Python CCP 20 : expressions régulières 7

in #fr6 years ago

Table of Contents

  1. Correspondre des nouvelles lignes avec le caractère .
  2. Récapitulatif des symboles des regex
  3. Correspondance sensible à la casse
  4. Bilan
  5. Pour aller plus loin

Correspondre des nouvelles lignes avec le caractère .

Le combo .* pourra correspondre à tout sauf à une nouvelle
ligne. En passant re.DOTALL comme second argument de
re.compile(), vous pourrez faire correspondre le . avec tous
les caractères, incluant le caractère de nouvelle ligne.

import re

noNewlineRegex = re.compile('.*')
print(noNewlineRegex.search('Liberté.\nEgalité.\nFraternité.').group())

print('-' * 30)

newlineRegex = re.compile('.*', re.DOTALL)
print(newlineRegex.search('Liberté.\nEgalité.\nFraternité.').group())

Récapitulatif des symboles des regex

`?` 0 ou 1 occurrence du groupe le précédent
`*` 0 ou plusieurs occurrences
`+` au moins une occurrence
`{n}` exactement *n* occurrences
`{n, }` *n* ou plus occurrences
`{, m}` de 0 à *m* occurrences
`{n,m}` au moins *n* et au plus *m* occurrences
`*?` version non gloutonne de `*`
`+?` version non gloutonne de `+`
`{n,m}?` version non gloutonne de `{n,m}`
`^test` signifie que la chaîne doit commencer par *test*
`test$` signifie que la chaîne doit finir par *test*
`.` correspond à n'importe quel caractère (sauf `\n`)
`\d` correspond à 1 chiffre
`\w` correspond à 1 mot
`\s` correspond à 1 espace
`\D` tout sauf 1 chiffre
`\W` tout sauf 1 mot
`\S` tout sauf 1 espace
`[abc]` correspond à tout caractère entre crochets
`[^abc]` correspond à tout caractère qui n'est pas entre crochets

Correspondance sensible à la casse

Normalement, les regex correspondent au texte avec la casse
précisée.

import re

regex1 = re.compile('Bonjour')
print(regex1.search('Bonjour les apprentis pythoniens.').group())

regex2 = re.compile('BONJOUR')
if regex2.search('Bonjour les apprentis pythoniens.') == None:
    print('no match')

regex3 = re.compile('bonjour')
if regex3.search('Bonjour les apprentis pythoniens.')  == None:
    print('no match')

Mais parfois vous voulez simplement la correspondance avec les
lettres sans vous soucier de la casse.

import re

regex1 = re.compile('Bonjour', re.I)
print(regex1.search('Bonjour les apprentis pythoniens.').group())

regex2 = re.compile('BONJOUR', re.IGNORECASE)
print(regex2.search('Bonjour les apprentis pythoniens.').group())

regex3 = re.compile('bonjour', re.I)
print(regex3.search('Bonjour les apprentis pythoniens.').group())

Bilan

Nous avons vu dans ce cours :

  • Comment correspondre des nouvelles lignes avec le caractère .
  • Un récapitulatif des symboles des regex
  • La gestion de la casse

Pour aller plus loin

Sort:  

@lgsp, I gave you a vote!
If you follow me, I will also follow you in return!