Regex [Résolu]

hcp7kuz 208 Messages postés mardi 18 août 2015Date d'inscription 4 janvier 2018 Dernière intervention - 4 nov. 2017 à 18:45 - Dernière réponse : hcp7kuz 208 Messages postés mardi 18 août 2015Date d'inscription 4 janvier 2018 Dernière intervention
- 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
Afficher la suite 

1 réponse

Répondre au sujet
hcp7kuz 208 Messages postés mardi 18 août 2015Date d'inscription 4 janvier 2018 Dernière intervention - 4 nov. 2017 à 22:36
0
Utile
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))
Commenter la réponse de hcp7kuz