Je veux obtenir la première correspondance d'une expression rationnelle.
Dans ce cas, j'ai obtenu une liste :
text = 'aa33bbb44'
re.findall('\d+',text)
['33', '44']
Je pourrais extraire le premier élément de la liste :
text = 'aa33bbb44'
re.findall('\d+',text)[0]
'33'
Mais cela ne fonctionne que s'il y a au moins une correspondance, sinon j'obtiendrai une erreur :
text = 'aazzzbbb'
re.findall('\d+',text)[0]
IndexError : l'index de la liste est hors de portée
Dans ce cas, je pourrais définir une fonction :
def return_first_match(text):
try:
result = re.findall('\d+',text)[0]
except Exception, IndexError:
result = ''
return result
Existe-t-il un moyen d'obtenir ce résultat sans définir une nouvelle fonction ?
0 votes
Pour moi, la réponse acceptée n'a pas fonctionné. J'ai dû supprimer l'accès à l'index du tableau et utiliser
len(re.findAll)==0
à la place.