[regexp] delimitation de mots

lesbonsplansdesophie
WRInaute impliqué
WRInaute impliqué
 
Messages: 523
Inscription: 1 Mar 2004

[regexp] delimitation de mots

Message le Ven Jan 13, 2006 13:00

Salut,

Je suis entrain de travailler sur une sorte de moteur de recherche, et utilise la regexp suivante (PCRE) pour détecter la présence du mot "xyz" dans la chaine $chaine:

Code: Tout sélectionner
preg_match('`\bxyz\b`im',$chaine);


l'assertion \b permet de detecter une limite de mot (en incluant la ponctuation) et les parametres i et m permettent de ne pas tenir compte de la casse ni des sauts de lignes.

Seulement j'ai un probleme, si mon mot c'est par exemple "yahoo" et que $chaine comporte une url style -www.balba.yahoo.com/truc alors ma regexp retourne vrai. C'est normal, $chaine comporte bien le "mot" yahoo encadré par deux points, donc preg_match le detecte ce que je ne veux pas (car en realite $chaine ne "parle" pas de yahoo a proprement parler)

Donc ma question est la suivante: auriez vous une idee de regexp me permettant de detecter le mots sauf s'il est entre deux points (ce qui signifie que ce mot est dans une url), pour eviter de polluer ma recherche ?

Merci d'avance !


Pierrot25
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 446
Inscription: 17 Mar 2005

Message le Ven Jan 13, 2006 14:43

voila une bonne question !!
En fait j'ai le même problème donc je suis également preneur d'une solution.
D'avance merci à tous

lesbonsplansdesophie
WRInaute impliqué
WRInaute impliqué
 
Messages: 523
Inscription: 1 Mar 2004

Message le Ven Jan 13, 2006 15:08

Bon alors voila ce que j'ai trouve de mieux:

Code: Tout sélectionner
preg_match('`(^xyz\b|\sxyz\b)`im',$chaine);


Donc ca donne ca:

"xyz blalballbalbl" -> true

"blalblal xyz wefwefwe" -> true

"sddfwaef xyz, wefewfwef" -> true

et enfin,

"dsfsadfsd -http://www.xyz.com wfef" -> false :)

Seul desavantage, si l'auteur du texte ne connait pas les regles de ponctuations et ecrit un truc du style:

"sdfsdfsd,xyz ferferferf" -> false (a cause du fait qu'il devrait y avoir un espace apres la virgule)

Enfin bon c'est mieux que rien...

Qqun a qque chose de mieux a suggérer ?

kalex
WRInaute discret
WRInaute discret
 
Messages: 241
Inscription: 14 Sep 2004

Message le Sam Jan 14, 2006 21:10

Faire ça en deux passes ?
Par exemple, utiliser la même regex que celle qui crée des liens à partir d'URL sur un forum, mais qui au lieu de remplacer l'URL par un lien la remplacerait par une chaîne vide.
Ensuite tu appliques ta regex sur la chaîne épurée des URL...

lesbonsplansdesophie
WRInaute impliqué
WRInaute impliqué
 
Messages: 523
Inscription: 1 Mar 2004

Message le Dim Jan 15, 2006 13:24

oui ça marcherait, mais multiplierait le temps de traitement par deux.... merci quand même !


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :

Consultez la description détaillée des produits ou services de Google suivants : Google Sets, Google Suggest, Google Image Labeler

  • Générateur de mots-clés
    Cet outil vous permet de créer à partir de quelques mots-clés une liste d'expressions constituées des mots pris dans tous les ordres possibles. Il sert aux analyses de positionnement et achats de mots-clés.
  • Suggestion de mots
    Cet outil vous fournit une liste de mots sémantiquement proches du mot que vous fournissez en entrée. Il peut servir à vous donner des idées de mots à utiliser sur vos pages, voire de contenus à ajouter.


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité