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 :

expression régulière. Selection


Sujet :

Python

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 147
    Points : 64
    Points
    64
    Par défaut expression régulière. Selection
    Bonjour,
    D'abord le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    import re
     
    texte1=""" un poucentage désiré 3% et qui doit donner vrai
     
    voilà"""
     
    texte2=""" un poucentage  3\% et existant et qui doit donner None
     
    voilà"""
     
    texte3=""" une commande \item et un poucentage  %  et qui doit donner vrai
     
    voilà"""
     
    texte4=""" un texte sans pourcentage
     
    voilà"""
    print(re.search("(%)([^\\n]*)(\\n)",texte1))
    print(re.search("(%)([^\\n]*)(\\n)",texte2))
    print(re.search("(%)([^\\n]*)(\\n)",texte3))
    print(re.search("(%)([^\\n]*)(\\n)",texte4))
    Je souhaiterais lorsque l'on a \% dans le texte que le résultat soit None or il est vrai.
    Pouvez me corriger l'erreur de syntaxe? J'ai essayé sans succès avec [^\\]
    Merci

    Gabriel

  2. #2
    Membre éprouvé

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Points : 1 273
    Points
    1 273
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "[^\\\\](%)([^\n]*)(\n)"
    … Me semble-t-il…

    Attention au backslash dans les regex, c’est un peu une plaie… surtout si on veut gérer les retours à la ligne et autre caractères représentés par des séquences échappées (car on ne peut pas alors utiliser de chaîne raw, r"blabla").

    Ici, tu veux le caractère “retour à la ligne”, qui n’a aucune signification particulière en regex, et n’a donc pas besoin d’être regex-échappé, donc pas besoin de double, triple ou quadruple “\”.

    Par contre, le caractère \ lui-même sert à la fois d’échappement pour les string python, et pour la regex*! Du coup, la chaîne "\\\\" se “traduit” par un chaîne brute (raw) r"\\", qui se “traduit” à son tour en simple “\” pour la regex… Bref, faut un genre d’échappement “au carré”*!

    Sinon, plutôt que de recompiler quatre fois la même regex, mieux vaut le faire une fois, comme ça*:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    import re
     
    texte1=""" un poucentage désiré 3% et qui doit donner vrai
     
    voilà"""
     
    texte2=""" un poucentage  3\% et existant et qui doit donner None
     
    voilà"""
     
    texte3=""" une commande \item et un poucentage  %  et qui doit donner vrai
     
    voilà"""
     
    texte4=""" un texte sans pourcentage
     
    voilà"""
     
    reg = re.compile("[^\\\\](%)([^\n]*)(\n)")
    print(reg.search(texte1))
    print(reg.search(texte2))
    print(reg.search(texte3))
    print(reg.search(texte4))

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 147
    Points : 64
    Points
    64
    Par défaut
    Merci.

    Ca me semble convenir.

    Gabriel

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

Discussions similaires

  1. expression régulière - selection information
    Par Isabella83 dans le forum Langage
    Réponses: 7
    Dernier message: 19/04/2012, 13h50
  2. [RegEx] Réduire la selection d'une expression régulière
    Par spelou dans le forum Langage
    Réponses: 6
    Dernier message: 25/05/2009, 19h33
  3. Expressions régulières dans un SELECT
    Par CinePhil dans le forum Requêtes
    Réponses: 5
    Dernier message: 01/10/2008, 13h08
  4. Expression réguliére input / select
    Par bdptaki dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 07/07/2008, 14h57
  5. Réponses: 6
    Dernier message: 30/01/2008, 22h20

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