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

Requêtes MySQL Discussion :

une regex simple : trouver un mot en 6 majuscules


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 64
    Par défaut une regex simple : trouver un mot en 6 majuscules
    Bonjour à tous,
    Je me casse les dents avec une regex pourtant toute simple. Je veux savoir si dans ma chaine il existe un mot de 6 caractères tous en majuscules. Alors je tape:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT *
    FROM `rt_air_rail_d_5h45`
    WHERE `nomDes`
    REGEXP '[A-Z]{6}'
    et il me renvoie tous les enregistrements sans tenir compte de la casse (majuscule).

    Merci pour l'aide

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    219
    Détails du profil
    Informations personnelles :
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2005
    Messages : 219
    Par défaut
    Oula attention je vais donner une réponse dans la rubrique MySQL
    Bon, ceci dit c'est surtout une question de regexp...

    1 problème évident et 1 autre très probable :
    1/ [A-Z]{4} cherche à savoir s'il y a précisément 4 majuscules... mais placées n'importe où donc dans A5eFEET$, tu as bien 4 majuscules quelque part. Il faut donc ajouter un début et fin de chaîne, soit 2/ si tu as laissé l'interclassement par défaut, tu seras en case insensitive. Chercher une majuscules n'a donc pas de sens. Change ton interclassement, par exemple en utf8_bin

  3. #3
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 64
    Par défaut
    Euh Talvins, tu reviens quand tu veux dans la rubrique mysql!

    En effet mon interclassement (je ne vois pas bien ce que le mot signifie mais bon) finissait par les deux lettres "ci" case insensitive, donc forcément mes regex de recherche de majuscules ne pouvaient pas passer.
    Par contre ce qui est embéttant c'est que le champ, qui était en texte, et qui est toujours en texte dans la structure s'affiche dans phpmyadmin comme un BLOB, et il faut que je demande l'option d'affichage des blobs à chaque fois que je veux voir, c'est un peu embettant.

    Ensuite mes chaînes sont noyées dans un texte pas forcément séparées par des espaces donc j'ai testé la formule avec des parenthèses et ça fait ce que je veux, cool:
    Merci Talvins, donc

  4. #4
    Membre chevronné Avatar de nounetmasque
    Inscrit en
    Janvier 2003
    Messages
    494
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 494
    Par défaut
    Citation Envoyé par EnRadeSurEclipse Voir le message
    je ne vois pas bien ce que le mot signifie mais bon)
    L'interclassement se définit au niveau de la base ou de la table et détermine la manière dont sont encodé les chaînes de caractère. Un mauvais interclassement entraîne généralement des problème d'encodage de caractères spéciaux.

    Pense au tag

  5. #5
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 64
    Par défaut
    Bonjour Mounemasque: pour passer en résolu j'aimerai bien avoir une explication sur le passage en BLOB après avoir modifié l'interclassement.
    Merci.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    219
    Détails du profil
    Informations personnelles :
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2005
    Messages : 219
    Par défaut
    Je viens de faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE `matable` CHANGE `monchamp` `monchamp` TEXT CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
    Et c'est bien resté en TEXT avec mon texte "Hé ! Sàlut lês gärs" toujours impec.

    J'ai même passé ma table, qui était elle en ut8_general_ci en latin1_general_ci, et vice-versa.

    Dans tous les cas, je conserve mon type TEXT.
    D'un autre côté, ton résultat est logique il me semble puisque un BLOB est un TEXT sensible à la case...

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

Discussions similaires

  1. Utilisation d'une regex simple
    Par LaurentC33 dans le forum Pascal
    Réponses: 2
    Dernier message: 07/04/2015, 00h12
  2. [RegEx] Une regex simple je pense
    Par Fabrice14 dans le forum Langage
    Réponses: 1
    Dernier message: 25/01/2015, 15h07
  3. Regex pour trouver un mot
    Par djbad dans le forum Programmation et administration système
    Réponses: 3
    Dernier message: 29/11/2014, 22h11
  4. Réponses: 4
    Dernier message: 20/09/2014, 07h25
  5. [RegEx] une regex simple de recherche ?!?
    Par LeHibou2 dans le forum Langage
    Réponses: 1
    Dernier message: 05/12/2012, 09h24

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