Reg Ex Mysql

Résolu
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. 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 :)
    1. 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 ;-)
      1. 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. 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
          1. 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é :)
            1. 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 ^^
              1. 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 ;)
                1. 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
                  1. 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.
                    1. 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 :(
                      1. 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?
                        1. 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 ;)
                          1. 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