Regex

Résolu/Fermé
hcp7kuz Messages postés 243 Date d'inscription mardi 18 août 2015 Statut Membre Dernière intervention 23 mars 2019 - 4 nov. 2017 à 18:45
hcp7kuz Messages postés 243 Date d'inscription mardi 18 août 2015 Statut Membre Dernière intervention 23 mars 2019 - 4 nov. 2017 à 22:36
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

hcp7kuz Messages postés 243 Date d'inscription mardi 18 août 2015 Statut Membre Dernière intervention 23 mars 2019 23
4 nov. 2017 à 22:36
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))
0