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

Langage PHP Discussion :

Exclusion d'une chaine dans une expression régulière ? [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut Exclusion d'une chaine dans une expression régulière ?
    Bonjour,

    Mon expression régulière ne doit pas fonctionner avec la phrase suivante (elle est gérée par une autre expression régulière) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DEP. CHAUDIERE - COMMUNE 12 BIS  UNE VOIE - VEHICULE 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ~(?<motif>[^-]+)\s-\s(?<commune>.+)\s\s(?<voie>.*)\s-\s(?<vehicule>.+)~
    Je souhaiterai donc provoquer son non fonctionnement si "commune" contient "\sBIS".

    Pour se faire, j'ai essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (?<motif>[^-]+)\s-\s(?<commune>.+(?!\sBIS))\s\s(?<voie>.*)\s-\s(?<vehicule>.+)
    https://regex101.com/r/bU6pB3/1

    Mais ça ne fonctionne pas, je pense qu'elle n'est par conséquent pas juste mais je ne sais pas comment la corriger.

    Merci d'avance pour votre aide,
    ZiP

  2. #2
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    Bonjour,

    Problème corrigé avec l'expression régulière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (?<motif>[^-]+)\s-\s(?<commune>(?:(?!\sBIS).)+)\s\s(?<voie>.*)\s-\s(?<vehicule>.+)
    https://regex101.com/r/sR7bM6/2

    ZiP

  3. #3
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 912
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 912
    Points : 6 705
    Points
    6 705
    Par défaut
    Donc la ville ne peut pas être BISCARROSSE.

  4. #4
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    Bonjour CosmoKnacki,

    Si, cette commune fonctionne : https://regex101.com/r/sR7bM6/3

    ZiP

  5. #5
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 912
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 912
    Points : 6 705
    Points
    6 705
    Par défaut
    Ah oui, alors disons NEUILLY LE BISSON. Plaisanterie mise à part, pourquoi t'acharner à décrire toute la chaîne alors que tu sais que les divers éléments sont soit séparés par un espace, un tiret, un espace, ou soit par deux espaces? Car si ce format est toujours le même tu peux faire ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $keys = ['motif', 'commune', 'voie', 'vehicule'];
    $result = array_combine($keys, preg_split('~\s-?\s~', $str));

  6. #6
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    Bonsoir CosmoKnacki,

    Malheureusement, si j'ai autant de difficulté, c'est parce que je dépends d'une source que je ne peux contrôler et dont les formats sont nombreux et justement pas identiques.

    Je ne me serait pas pris la tête comme ça sinon.

    Actuellement, j'arrive à gérer la quasi totalité des possibilités au travers de 6 expressions régulières.

    Mais c'est effectivement vrai, la commune citée ne fonctionne pas.

    Je vais tester ton code dès que j'en ai la possibilité.

    Merci,
    ZiP

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

Discussions similaires

  1. recherche d'une chaine dans une chaine
    Par Katachana dans le forum Langage
    Réponses: 2
    Dernier message: 15/07/2008, 13h10
  2. recherche d'une chaine dans une chaine
    Par jpclutier dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 03/12/2007, 12h30
  3. Tester une chaine dans une chaine
    Par ulysse031 dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 26/03/2007, 01h48
  4. chercher caractére d'une chaine dans une chaine
    Par ulysse031 dans le forum Langage
    Réponses: 25
    Dernier message: 21/03/2007, 19h09
  5. Réponses: 2
    Dernier message: 19/10/2005, 16h38

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