Regex

Résolu
hcp7kuz Messages postés 238 Date d'inscription   Statut Membre Dernière intervention   -  
hcp7kuz Messages postés 238 Date d'inscription   Statut Membre Dernière intervention   -
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

  1. hcp7kuz Messages postés 238 Date d'inscription   Statut Membre Dernière intervention   23
     
    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