Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

detecter un entier avec expression régulière

4 réponses
Avatar
bubu
bonjour,
je voudrais detecter un entier dans une chaine de caractère mais sa
longueur peut varier, je me demandais si il y avait quelque-chose de
prévu pour ça ?

au pire je peux faire :
\d
\d\d
\d\d\d

mais bon...
merci d'avance

4 réponses

Avatar
MCI, Shadok Gouroudoudou
Bonjour !


Un 'tit exemple, ça irait ?

Voilà :

import string,re
st="""azer1234 az
e 123 ZZZ13A"""

compile_obj = re.compile("d+", re.MULTILINE)

resul = compile_obj.findall(st)
for i in resul:
print i







--
@-salutations

Michel Claveau
Avatar
tool69
Salut,

Pas besoin de string (on est encore qu'au printemps), du reste finditer
me semble plus élégant...mais bon, question de gôut !

import re
st="""azer1234 az
e 123 ZZZ13A"""

matched = re.compile("d+", re.MULTILINE)

for i in matched.finditer(st):
print i.group()
Avatar
MCI, Shadok Gouroudoudou
Bonjour !

Il y a une différence :
- findall retourne une liste de contenu (de chaînes)
- finditer retourne un itérateur sur les objets "trouvés" (matched)

S'il s'agit juste de trouver des chaînes, findall est meilleur.
Pour trouver les positions des objets cherchés, finditer est
préférable.




Quand au string, on a l'habitude de dire "en avril, ne te découvre pas
d'un fil". Or, un string n'est qu'un gros fil.
Mais, bon, suivant ce que l'on veut faire, on peut l'oter...






--
@-salutations

Michel Claveau
Avatar
bubu
ah merci à vous deux, j'avais pas trouvé d+