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 :

Même caractère casse différente ( en back reference ) [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 661
    Billets dans le blog
    1
    Par défaut Même caractère casse différente ( en back reference )
    Bonjour !

    Est-il possible de matcher une suite de caractères en minuscules suivie de la même chaine en majuscules ?

    exemples
    ok
    ccc_CCC
    foo_FOO


    ko
    ccc_FOO
    ccc_CcC
    ccc_ccc

    Je peux le faire avec en parsant les matches en php, mais directement en php existe-t-il une possibilité de modification de casse du backréférence ?


    ([a-z]{3})_\1<<<< là le \1 je le voudrais en MAJUSCULES !
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  2. #2
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Salut SpaceFrog,


    Je pense que tu peux faire ceci : \1{Lu}

  3. #3
    Membre éprouvé Avatar de denissay
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 103
    Par défaut
    Très bonne question... La réponse est assez simple, mais astucieuse xD

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^([a-z]{3})_(?=[A-Z]{3})(?i:\1)$
    DEMO

    Les crédits reviennent à HamZa qui a trouvé par accident... lol

  4. #4
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    3 020
    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 : 3 020
    Par défaut
    Si c'est pour rechercher dans une chaîne plus grande, tu peux utiliser ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    \b([a-z]+)_(?=(?i)\1\b)[A-Z]+
    Le word boundary \b pouvant être remplacé par ce qui t'arrange.

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 661
    Billets dans le blog
    1
    Par défaut
    Merci batis et HamZa, je tournais autour d'un truc du genre sans pouvoir mettre le doigt dessus !
    Belle astuce ...

    SpaceSaussage => pour le matcher dans une chaine je passerais plutôt par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    \b([a-z]{2})_(?=[A-Z]{2})(?i:\1)\b

    Sauf que ... je me suis réjoui un peu trop vite le (?i: ) ne semble fonctionner que pour .net, pas pour php
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre éprouvé Avatar de denissay
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 103
    Par défaut
    Ooops, la demo contenait un mauvais lien... corrigé !

    Normalement ça devrait fonctionner sous php, sinon au pire tu remplaces (?i:\1) par (?i)\1 => tous ce qui suivra le (?i) sera matché en minuscule)

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/08/2010, 12h15
  2. Réponses: 5
    Dernier message: 29/11/2006, 21h10
  3. Réponses: 8
    Dernier message: 09/11/2006, 14h01
  4. Réponses: 4
    Dernier message: 07/03/2006, 15h54
  5. Réponses: 7
    Dernier message: 12/05/2003, 22h50

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