J'essaie de créer une regex python de la chaîne suivante :
ABC--2000-01-10X13-11-44.237Z--572b3b7681572b3b7681572b3b7681572b3b7681

Voici ce que j'ai réussi :
^ABC\S\S[0-9A-T\S.]{24}\S\S[a-z0-9]{40}$

Le problème est que python continue de se plaindre de l'absence de barres obliques inverses anormales ou du préfixe r, j'ai essayé les deux suggestions sans succès. Je parviens à le faire arrêter de pleurer sur les barres obliques inverses en remplaçant \S par - afin que la regex ressemble à la place : ^ABC--[0-9A-T-.]{24}--[a-z0-9]{40}$

Mais maintenant ça ne correspond plus et je pense que c'est à cause de la ponctuation . ? Je ne suis pas sûr et j'espère que quelqu'un est prêt à m'aider à résoudre ce problème.

0
DJAligatjor 16 mars 2019 à 16:47

2 réponses

Meilleure réponse

Spécifiez votre expression régulière en tant que chaîne brute (r'...') :

pat = re.compile(r'^ABC\S\S[0-9A-T\S.]{24}\S\S[a-z0-9]{40}$')

Sinon (dans une chaîne "normale") les barres obliques inverses doivent être doublées.

Exemple de code (fonctionnel) :

import re

str = 'ABC--2000-01-10X13-11-44.237Z--572b3b7681572b3b7681572b3b7681572b3b7681'
pat = re.compile(r'^ABC\S\S[0-9A-T\S.]{24}\S\S[a-z0-9]{40}$')
print(pat.match(str).group())
0
Valdi_Bo 16 mars 2019 à 14:00