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 :

Problèmes Majuscule REGEX [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur développement de composants
    Inscrit en
    Janvier 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement de composants
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2012
    Messages : 8
    Par défaut Problèmes Majuscule REGEX
    Bonjour à tous,
    J'aimerais utiliser une regex pour contrôler si dans ma string il y a une balise personne...
    Donc voici ma regex actuelle :
    "(<|&lt;)(personne)|(personne)(>|&gt;)"
    Et voici les différents test que je fais dessus :
    <personne
    personne>
    Pour le moment la regex fonctionne
    <PERSONNE
    PERSONNE>
    Ici je bloque.
    Je sais que l'option i permet de rendre le test insensible au majuscule, mais j'ai beau rajouter un i au bout de ma regex rien ne fonctionne...
    Pouvez vous m'aider?! (au passage si vous trouvez que ma regex n'est pas optimale je suis preneur)
    D'avance merci.

  2. #2
    Membre chevronné

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 205
    Billets dans le blog
    1
    Par défaut
    C'est bien l'option i que tu dois rajouter pour rendre ta chaîne insensible à la casse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "#(<|&lt;)(personne)|(personne)(>|&gt;)#i"
    si ce post vous a été utile, si votre problème est résolu.
    Pensez-y !
    __________________________________
    Doc officielle PHP | FAQ PHP | Cours PHP

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur développement de composants
    Inscrit en
    Janvier 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement de composants
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2012
    Messages : 8
    Par défaut
    Merci de ta réponse, mais j'ai déjà essayé cette solution là, et je ne comprends pas pourquoi ça ne fonctionne pas...
    Lorsque je match ce regex avec mes différents tests il ne me retourne jamais true...
    En attendant la solution des regex, j'ai tout simplement effectué un LowerCase sur ma string!

  4. #4
    Membre chevronné

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 205
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par sweetdude Voir le message
    Merci de ta réponse, mais j'ai déjà essayé cette solution là, et je ne comprends pas pourquoi ça ne fonctionne pas...
    Lorsque je match ce regex avec mes différents tests il ne me retourne jamais true...
    Tu as bien mis le i en dehors de la regex (donc après le '#' dans mon exemple) ?
    Tu peux poster ton essai et les différentes chaînes testées ?
    si ce post vous a été utile, si votre problème est résolu.
    Pensez-y !
    __________________________________
    Doc officielle PHP | FAQ PHP | Cours PHP

  5. #5
    Membre régulier
    Homme Profil pro
    Ingénieur développement de composants
    Inscrit en
    Janvier 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement de composants
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2012
    Messages : 8
    Par défaut
    Oui je l'ai mis en dehors. Voici mon test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    String exp = "#(<|&lt;)(personne)|(personne)(>|&gt;)#i";
    p = Pattern.compile(exp);
    m = p.matcher(contenu);
    if(m.find()) {
           System.out.println("ça match!");
    }
    Et le contenu = <personne OU <PERSONNE OU personne OU PERSONNE
    Et sans le i il match pour <personne mais pas pour <PERSONNE, logique, et là avec le i positionné ainsi il ne match plus rien...

  6. #6
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 988
    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 988
    Par défaut
    Bonjour,

    Le truc c'est que tu programmes en Java, et que tu es dans la section "regex" certes, mais qui n'en est pas moins la sous-section du forum php.
    Ce n'est pas très grave en soit, mais cela explique bien des incompréhensions.

    Donc dans ton cas, tu n'as pas à écrire de délimiteurs comme #. et tu dois utiliser le flag "CASE_INSENSITIVE".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    String exp = "(<|&lt;)(personne)|(personne)(>|&gt;)";
    p = Pattern.compile(exp,Pattern.CASE_INSENSITIVE);
    m = p.matcher(contenu);
    if(m.find()) {
           System.out.println("ça match!");
    }
    tu dois peut-être pouvoir alléger la syntaxe en supprimant le flag et en incluant (?i) directement dans la pattern.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String exp = "(?i)(<|&lt;)(personne)|(personne)(>|&gt;)";
    p = Pattern.compile(exp);
    Après, j'ai pas testé car je ne fais pas de java.

    Bon courage

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

Discussions similaires

  1. problème de regex
    Par lanfeust42 dans le forum Langage
    Réponses: 11
    Dernier message: 12/07/2006, 15h32
  2. Problème avec RegEx et une Query string
    Par Erakis dans le forum Langage
    Réponses: 6
    Dernier message: 08/11/2005, 15h48
  3. problème majuscule et minuscule
    Par rdams dans le forum Requêtes
    Réponses: 4
    Dernier message: 07/10/2005, 14h45
  4. problème majuscule
    Par estelledany dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 03/06/2005, 12h21
  5. Problème de Regex ... avec un point
    Par bugalood dans le forum Langage
    Réponses: 2
    Dernier message: 29/05/2005, 10h26

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