IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Pourquoi cette expression régulière ne fonctionne pas?


Sujet :

Python

  1. #1
    Membre éclairé
    Femme Profil pro
    Ingénieur informatique scientifique
    Inscrit en
    Mai 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur informatique scientifique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 313
    Par défaut Pourquoi cette expression régulière ne fonctionne pas?
    Bonjour,

    je souhaite utiliser une expression régulière avec le module "re".
    En effet j'ai par exemple une chaîne de caractère du type:
    "test[2].maVariable"
    Ici j'ai mis [2] mais il peut s'agir d'un autre chiffre, je ne sais pas à l'avance lequel.
    Je veux transformer ma chaîne en une autre chaîne du type:
    "test3.maVariable"
    Donc retirer les crochets (il ne peut y a voir qu'un seul couple de crochets par chaine) et ajouter 1 au nombre encerclé par les crochets.
    J'ai donc fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    import re
    # Je recupere la valeur du nombre entre crochets dans ma chaine de depart
    m = re.match("\[(\d+)\]", chaine)
    if m is not None:
        indice = int(m.group(0)) + 1
        # Je remplace le "[n]" par "n+1"
        result = re.sub("\[\d+\]", str(indice), chaine)
    Cependant m est toujours égal à "None".
    Je ne vois pas pourquoi il ne trouve pas le pattern "\[(\d+)\]" que je lui fournis, "chaine" a bien la valeur que j'attends.

    Merci d'avance pour votre aide!

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 591
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 591
    Par défaut
    Citation Envoyé par mokochan Voir le message
    Cependant m est toujours égal à "None".
    Je ne vois pas pourquoi il ne trouve pas le pattern "\[(\d+)\]" que je lui fournis, "chaine" a bien la valeur que j'attends.
    .match analyse depuis le début de la chaîne. Comme elle ne commence pas par "[", ça ne peut pas matcher.
    Il est peut être, dans ce cas préférable, d'utiliser .search et .span:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> s = "test[2].maVariable"
    >>> m = re.search(r"(\[(\d+)\])", s)
    >>> m.groups()
    ('[2]', '2')
    >>> m.span(1)
    (4, 7)
    >>> m.span(2)
    (5, 6)
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre éclairé
    Femme Profil pro
    Ingénieur informatique scientifique
    Inscrit en
    Mai 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur informatique scientifique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 313
    Par défaut
    En effet je n'avais pas vu que match analysait depuis le début de la chaîne!
    Merci beaucoup ça fonctionne

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pourquoi cette tâche CRON ne fonctionne pas ?
    Par renaud26 dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 23/04/2012, 11h36
  2. [RegEx] Expressions régulières ne fonctionnent pas
    Par denisg63 dans le forum Langage
    Réponses: 3
    Dernier message: 28/12/2009, 21h48
  3. Expression régulière ne fonctionne pas
    Par Benzeghiba dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 24/06/2008, 23h01
  4. Réponses: 2
    Dernier message: 13/05/2006, 00h01
  5. [ADO.Net][OleDb] Pourquoi ma requête access ne fonctionne pas?
    Par Bapt.ice dans le forum Accès aux données
    Réponses: 6
    Dernier message: 05/05/2006, 18h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo