Signaler

Regex [Résolu]

Posez votre question hcp7kuz 190Messages postés mardi 18 août 2015Date d'inscription 4 novembre 2017 Dernière intervention - Dernière réponse le 4 nov. 2017 à 22:36 par hcp7kuz
Bonjour,

Je réalise une fonction pour récupérer uniquement les nombres à partir de la première occurrence d'un nombre.
En gros, "deux + 1" devient 1 et "deux + 1 égale ?" devient 1 aussi.
Mon code marche, mais je souhaiterais que l'on puisse également ajouter un "-" optionnellement pour les nombre négatifs.

Mon code :
import re

def strToInt(chaine):
    nbr = re.sub("(\D*)(?P<nbr>\-?\d*)(.*)", "\g<nbr>", chaine)
    if nbr != "":
        return int(nbr)
    else:
        return False

msg = "deux -1 = ?"
print(strToInt(msg)) # Doit afficher -1


Comment faire ?

Merci pour votre aide,
hcp7kuz
Utile
+0
plus moins
J'ai trouvé :

import re

def strToInt(chaine):
    #nbr = re.sub("\D*(?P<nbr>[\-0-9]*).*", "\g<nbr>", chaine)
    return re.sub("^[^0-9-]*(?P<nbr>[0-9-]*).*$", "\g<nbr>", chaine)
    if nbr != "":
        return int(nbr)
    else:
        return False

msg = "deux 17= ?"
print(strToInt(msg))
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !