On présente ici de nouveaux méta-caractères.
Certains correspondent à des affirmations : \b par exemple, signifie le bord d'un mot. Si l'on est effectivement au bord d'un mot, aucun caractère n'est absorbé, et l'analyse poursuit son cours. Sinon, il y a échec.
- |
- Le « ou ». Si A et B sont deux expressions rationnelles, l'expression A|B correspondra à toute chaîne vérifiant soit A, soit B.
Ce méta-caractères a une faible priorité. Par exemple, toto|tata signifie « Soit toto, soit tata », et non pas «tot, suivi de o ou t, suivi de ata ».
- ^
- Reconnaît ce qui suit s'il est en début de chaîne.
Si le drapeau re.MULTILINE a été passé, chaîne est remplacé par ligne dans ce qui précède.
>>> print re.search('^From', 'From Here to Eternity')
<re.MatchObject instance at 80c1520>
>>> print re.search('^From', 'Reciting From Memory')
None
- \$
- Comme ci-dessus, mais pour la fin (d'une chaîne/d'une ligne).
>>> print re.search('}$', '{block}')
<re.MatchObject instance at 80adfa8>
>>> print re.search('}$', '{block} ')
None
>>> print re.search('}$', '{block}\n')
<re.MatchObject instance at 80adfa8>
- \A
- Ne réalise de correspondance qu'en début de chaîne.
Ce méta-caractère \A est identique à ^, à moins que le drapeau re.MULTILINE soit passé. Auquel cas,
- \A est pour le début de la chaîne,
- ^ pour le début de chaque ligne.
- \Z
- Ne réalise de correspondance qu'en fin de chaîne.
Même remarque que ci-dessus, entre \Z et \$.
- \b
- Limite d'un mot, signalé par un espace, un caractère non-alphanumérique...
Par exemple, si on ne souhaite relever class que s'il est un mot (et non une partie d'un plus grand mot) :
>>> p = re.compile(r'\bclass\b')
>>> print p.search('no class at all')
<re.MatchObject instance at 80c8f28>
>>> print p.search('the declassified algorithm')
None
>>> print p.search('one subclass is')
None
Bien faire attention ici à utiliser des chaînes brutes, vu que \b correspond aussi au caractère backspace...
>>> p = re.compile('\bclass\b')
>>> print p.search('no class at all')
None
>>> print p.search('\b' + 'class' + '\b')
<re.MatchObject instance at 80c3ee0>
- \B
- Le contraire de \b.