Reg Ex Mysql

Résolu
Grimm -  
okuni Messages postés 1325 Statut Membre -
Bonjour,

Je désire faire une recherche sur des formule brute.

Je cherche donc un moyen de construire une RegEx qui permet de vérifier si deux éléments existent dans la formule peu importe leur place dans la formule.

Exemple : on cherche l'élément C et Cl
Il doit me trouver toutes les formule qui comporte C ET Cl et non pas seulement l'un des deux.

Le mieux que j'ai trouvé c'était '.*C.*(Cl).*' cetet formuel prend en compte l'ordre des caractère donc il ne me prendra jamais un 'ClC6H4CHO' car le Cl est placé avant.

J'espère m'etre fait comprendre et merci d'avance pour l'aide :D

16 réponses

  1. okuni Messages postés 1325 Statut Membre 126
     
    j'ai oublié de rajouter Formule_brute devant le 2ème LIKE ^^"
    mysql_query('SELECT Formule_brute FROM Table_PP WHERE Formule_brute LIKE BINARY "%C%" AND Formule_brute LIKE BINARY "%F%"') or die('erreur sql (formule_brute) : '.mysql_error());

    ça devrait fonctionner maintenant :p
    1
  2. okuni Messages postés 1325 Statut Membre 126
     
    le "ou" dans une regex est représenté par |
    donc (C|Cl)+
    le + pour dire que C ou Cl doit apparaitre au moins 1 fois
    0
  3. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  4. Grimm
     
    Merci mais j'ai déjà lu ça !

    ça me dis pas ce que je cherche, faut vérifier avant de balancer des liens

    merci quand meme ;)
    0
  5. okuni Messages postés 1325 Statut Membre 126
     
    ha ok alors ça se complique :p
    il faut d'office ceci C+ et alors l* donc il prendra tout les molécules ayant un C et aussi contenant un l donc C ou Cl

    EDIT : (C|Cl)+ en utilisant ça, tu va retourner les molécules suivante (exemple)
    C
    Cl
    CCl
    donc ça convient pour toi non?
    0
  6. Grimm
     
    Salut Okuni merci d'insister pour m'aider à trouver la réponse ;-)

    Non enfait on va changer les molecule pour mieux comprendre, on va prendre C et F. Donc moi ej veux trouver toutes les formule qui contiennent C ET F.

    C2F4
    F6C2
    etc...

    Il me faut les deux obligatoirement donc un OU est a exclure doffice :(
    0
  7. okuni Messages postés 1325 Statut Membre 126
     
    ok je vois mieux maintenant :p
    [CF]+
    si on fait ça, il y a un problème dans l'ordre, ce sera d'office une molécule avec CF ou FC

    mince...
    je pense qu'avec une seule requete, ce n'est pas possible.
    si tu fais ça en 2 requetes, ce sera plus facile. Tu pourrais pas exemple prendre toutes les molécules ayant C
    ensuite tu filtre le résultat avec toutes les molécules contenant F.

    J'espère que quelqu'un d'autre pourra nous éclairer mais a ma connaissance, il n'y a pas de et logique.
    0
  8. Grimm
     
    Ok c'est bien ce que je pensais mince alors :(

    Sinon je cherchais un moyen de faire ça dans la requete SQL genre faire des LIKE BINARY '%%C%%' AND LIKE BINARY '%%F%%' mais il veut pas qu'on en mette deux des like binary :D

    Bref ça gave ce truc ^^

    J'ai demander à l'un de mes prof mais toujours pas de réponse lol
    0
  9. okuni Messages postés 1325 Statut Membre 126
     
    pour ça, tu dois écrire ceci :
    champ_molecule like binary '%C%' and like binary '%F%'
    pourquoi écrire 2 fois % ?

    j'utilise une requete contenant 2 like binary, et tout fonctionne correctement ;)
    0
  10. Grimm
     
    mysql_query("SELECT Formule_brute FROM Table_PP WHERE Formule_brute LIKE BINARY '%C%' AND LIKE BINARY '%F%' ");

    Je met ça mec et ça me met une erreur :(

    Alors que si j'en met qu'un seul ça marche ... panni comprendre moi ^^
    0
  11. okuni Messages postés 1325 Statut Membre 126
     
    met ceci :
    mysql_query('SELECT Formule_brute FROM Table_PP WHERE Formule_brute LIKE BINARY "%C%" AND LIKE BINARY "%F%" ') or die('erreur sql (formule_brute) : '.mysql_error());

    Ensuite dis moi l'erreur qui est affiché :)
    0
  12. Grimm
     
    Voici la belle erreur :

    erreur sql (formule_brute) : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIKE BINARY "%F%"' at line 1
    0
  13. Grimm
     
    Mince je pensais t'avoir répondu...

    j'avais dis ....

    oooh le bo goss ça marche merci ;-)

    C'est une petit erreur d'inatention j'aurai du y penser !

    En totu qu'a si j'ai un probleme je sais a qui demander dorenavant ;-)
    0
  14. okuni Messages postés 1325 Statut Membre 126
     
    pas de problème :D

    Et si un jour tu trouve une astuce pour faire un et logique avec un regex, dis le moi, ça m'intéresse :)
    0