[Python] :comment créer une fonction pour lancer vos regex ? (exemple : capture d’une ip)

Si vous développez un peu de script en python, vous vous rendrez compte que vous pouvez parfois appeler de très nombreuses fois le module regex et que à chaque fois (quasiment), vous devrez :

  • compilez la regex (son pattern)
  • appliquer une classe (search assez souvent)
  • si vous utilisez classe vous retournerez souvent la sous classe group(1)

Ben oui c’est répétitif. En grosse faignasse, on fait des copier/coller au début… je sais je suis passé par là.

Bref si vous le faites une fois dans votre script ou site ça va mais ce n’est pas souvent le cas. Au -delà de 2 fois, il faut créer une fonction ya pas de lézard comme dirait l’autre.

Je vous propose cette petite fonction clef en main et adaptable bien sûr (ou pourrait par exemple lui passer un paramètre supplémentaire, le numéro de group).

#on oublie pas l'import du module re

import re

#puis la fonction
def regex(reg,line):
        var=re.compile(reg)
        return var.search(line).group(1) if var.search(line) else ""

# que l'on utilise comme ceci
ip=regex("((([0-9]{1,3})(\.)){3}[0-9]{1,3})",ligne)

Donc un peu d’explication de code :

  • on import re
  • on défini une fonction récupérant deux arguements
    • reg : le pattern
    • line : la ligne à analysée
  • on compile la regex
  • on retourne :
    • si on trouve rien «  » un vide
    • sinon la valeur de group(1)

Pour l’exemple, vous l’aurez reconnu c’est la capture d’une ip dans la variable ligne (à définir). Et vous comment faites vous ? j’imagine que certains font beaucoup mieux.

Un commentaire sur “[Python] :comment créer une fonction pour lancer vos regex ? (exemple : capture d’une ip)

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s