Regex

Résolu/Fermé
Signaler
Messages postés
238
Date d'inscription
mardi 18 août 2015
Statut
Membre
Dernière intervention
23 mars 2019
-
Messages postés
238
Date d'inscription
mardi 18 août 2015
Statut
Membre
Dernière intervention
23 mars 2019
-
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

1 réponse

Messages postés
238
Date d'inscription
mardi 18 août 2015
Statut
Membre
Dernière intervention
23 mars 2019
21
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))