Bonjour,
Je viens de lire une bonne partie du howto sur les regexp de Python 2.7 et j'ai une question pour vous.
En lisant un fichier, je dois vérifier que les lignes sont semblables à celle-ci AA;03;64;B5;12;02;02;FE;98;, c'est à dire une alternance de nombres hexadécimaux sur 2 digits, séparés par des ; (point-virgules).
Pour simplifier, je commence par des nombres décimaux et j'ai fait le code suivant :
Je suis OK sur le résultat du match, ma chaîne étant bien de la forme attendue. Je suis en revanche plus étonné du résultat de findall. Je m'attendais à obtenir la chaine entière, voire une combinaison de morceaux de la chaine genre ['56;'], ['34;56;'].
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 >>> print re.findall( re.compile(r"(\d{2};)+"), "12;34;56;") ['56;'] >>> print re.match( re.compile(r"(\d{2};)+"), "12;34;56;") <_sre.SRE_Match object at 0x011D2EA0>
Plusieurs possibilités :
- mon expression régulière ne fait pas ce que je veux
- je n'ai pas compris le fonctionnement de findall
- autre possibilité ^^
Je fais appel à votre savoir pour savoir quelle possibilité est la bonne. Merci d'avance![]()
Partager