Regex pour une recherche

Résolu
cs_bobino75 Messages postés 20 Date d'inscription vendredi 3 octobre 2008 Statut Membre Dernière intervention 14 août 2012 - 3 juin 2009 à 15:55
cs_bobino75 Messages postés 20 Date d'inscription vendredi 3 octobre 2008 Statut Membre Dernière intervention 14 août 2012 - 18 juin 2009 à 21:34
Bonjour,

J'ai quelques problèmes avec mon regex et j'aimerais bien que quelqu'un puisse m'aider.

- Ma recherche se fait sur une possibilité de 5 mots clés. Si je recherche le mot « mal », je ne veux pas que le mot « maladie » soit trouvé.

- De plus, c'est un ET que je voudrais avoir dans ma recherche et non un OU. Si j'ai 3 mots clés, les 3 mots doivent se retrouver dans l'enregistrement.

- L'ordre des mots doit aussi être respecté. Si je recherche, avec 3 mots clés, « Je » « suis » « homme » donc me donner comme résultat, "Je suis un homme" et non "L'homme que je suis".

- Finalement, le nombre de mot entre chaque mot clé peut être spécifié. Les mots clés ne peuvent être séparés par 0 à 60 mots. Dans l'exemple "Je suis un homme", si je recherche « Je » et « homme » avec 0 comme nombre de mot entre les mots clés, la recherche ne trouvera rien. Par contre, si je met un nombre entre 3 et 60, la recherche retournera TRUE.

Probablement que ça prendra plusieurs RegEx mais je ne sais vraiment pas comment m'y prendre.

J'aimerais bien que vous puissiez me donner un bon coup de main.

Merci !

15 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
17 juin 2009 à 08:07
faut virer la ponctuation (ici la quote gène)

comme je t'ai dit plus tôt:

"premier ménage, donc, de (non exaustif) :

[,;:.!?'"\[\]\(\)=+\\/\-«»]


puis suppression des accents, sauts de lignes et espace multiples"
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
12 juin 2009 à 10:14
assez galère a lire... ton post...

un début (n'inclut pas cette limite de 60 mots)

\bje\b[\W\w]*?\bsuis\b[\W\w]*?\bhomme\b
0
cs_bobino75 Messages postés 20 Date d'inscription vendredi 3 octobre 2008 Statut Membre Dernière intervention 14 août 2012
12 juin 2009 à 14:20
Merci !

Mais je dois ajouter cette limite de 60 mots. C'est ce que le client veut et je dois respecter cette demande.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
12 juin 2009 à 14:38
je peux t'aider, je pense,
considérant que tu a supprimé les accents, et la ponctuation.

ca compliquerait inutilement l'expression si ce nettoyage n'etais pas fais en amont
0

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

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
12 juin 2009 à 14:42
premier ménage, donc, de (non exaustif) :

[,;:.!?'"\[\]\(\)=+\\/\-«»]


puis suppression des accents, sauts de lignes et espace multiples
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
12 juin 2009 à 14:55
\bje (?:\w+ ){0,60}\bhomme\b

nettoyag necessaire.
par contre, va chercher les expressions les plus longues....

mais on pet combiner avec d'autre mots clés :

\bje (?:\w+ ){0,60}\bhomme(?:\w+ ){0,60}\bpatient\b
0
cs_bobino75 Messages postés 20 Date d'inscription vendredi 3 octobre 2008 Statut Membre Dernière intervention 14 août 2012
12 juin 2009 à 16:02
Je vais essayer ça et je te reviens avec ça.

Un gros merci !!
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
12 juin 2009 à 16:08
gaffe, manque un espace:

\bje (?:\w+ ){0,60}\bhomme (?:\w+ ){0,60}\bpatient\b

faut en mettre un après chaque mot clé, sauf le dernier (lui, il est suivi de \b
0
cs_bobino75 Messages postés 20 Date d'inscription vendredi 3 octobre 2008 Statut Membre Dernière intervention 14 août 2012
12 juin 2009 à 16:29
Est-ce que je pourrais te poser une autre question.

J'ai présentement un problème de recherche. Je recherche dans mon formulaire le mot « le » mais le système me trouve « drôle ».

Le regex que j'ai : preg_match("#\b(".$frm_keywords.")\b#i", $ligne) où $frm_keywords contient le mot clé « le » dans ce cas.

Est-ce que je dois faire quelque chose de plus dans ma requête SQL ??

J'apprécie grandement ton aide...
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
12 juin 2009 à 16:34
pourquoi ces parenthèses, puisque tu sais le mot ...

peut etre une option a régler dans php, là, c'est plus regex....c'est php, le soci
0
cs_bobino75 Messages postés 20 Date d'inscription vendredi 3 octobre 2008 Statut Membre Dernière intervention 14 août 2012
12 juin 2009 à 16:38
J'utilise les parenthèses car je peux avoir de 1 à 5 mots clés dans ma recherche, que je sépare par un |.
0
cs_bobino75 Messages postés 20 Date d'inscription vendredi 3 octobre 2008 Statut Membre Dernière intervention 14 août 2012
12 juin 2009 à 21:51
En passant, est-ce que les accents dans les mots clés doivent être converties en code html é...?

Car, présentement ma recherche ne trouve pas le mot « été » et je sais très bien qu'elle devrait en trouver.

Merci !
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
15 juin 2009 à 09:08
remplace en "ete"
0
cs_bobino75 Messages postés 20 Date d'inscription vendredi 3 octobre 2008 Statut Membre Dernière intervention 14 août 2012
16 juin 2009 à 17:45
Désolé mais ça ne fonctionne pas.

J'ai commme code : preg_match("#\bquand (?:\w+ ){0,60}\bmaison\b#i","oui mais m'as te dire une affaire moi quand j'ai bati la maison l'annee passee");

Est-ce possible qu'il me manque quelque chose ?

Merci !
0
cs_bobino75 Messages postés 20 Date d'inscription vendredi 3 octobre 2008 Statut Membre Dernière intervention 14 août 2012
18 juin 2009 à 21:34
Merci pour ton aide !
0
Rejoignez-nous