Reg Ex Mysql

Résolu/Fermé
Grimm - 21 mai 2010 à 10:09
okuni Messages postés 1221 Date d'inscription jeudi 4 septembre 2008 Statut Membre Dernière intervention 2 janvier 2014 - 27 mai 2010 à 14:32
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
A voir également:

16 réponses

okuni Messages postés 1221 Date d'inscription jeudi 4 septembre 2008 Statut Membre Dernière intervention 2 janvier 2014 126
27 mai 2010 à 11:38
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
Up !

SVP une ptite reponse :)
0
okuni Messages postés 1221 Date d'inscription jeudi 4 septembre 2008 Statut Membre Dernière intervention 2 janvier 2014 126
26 mai 2010 à 15:11
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
Moi je veux un ET ^^
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
26 mai 2010 à 15:39
Salut,

Vas voir ici

0
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
okuni Messages postés 1221 Date d'inscription jeudi 4 septembre 2008 Statut Membre Dernière intervention 2 janvier 2014 126
26 mai 2010 à 19:11
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
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
okuni Messages postés 1221 Date d'inscription jeudi 4 septembre 2008 Statut Membre Dernière intervention 2 janvier 2014 126
27 mai 2010 à 09:41
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
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
okuni Messages postés 1221 Date d'inscription jeudi 4 septembre 2008 Statut Membre Dernière intervention 2 janvier 2014 126
27 mai 2010 à 10:34
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
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
okuni Messages postés 1221 Date d'inscription jeudi 4 septembre 2008 Statut Membre Dernière intervention 2 janvier 2014 126
27 mai 2010 à 11:14
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
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
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
okuni Messages postés 1221 Date d'inscription jeudi 4 septembre 2008 Statut Membre Dernière intervention 2 janvier 2014 126
27 mai 2010 à 14:32
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