Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1229 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [Résolu] Expressions régulières... je bloque. :(

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] Expressions régulières... je bloque. :(

n°1917866
Vitaminae
Posté le 24-08-2009 à 15:28:36  profilanswer
 

Bonjour à tous,
 
je bloque sur une expression régulière depuis quelques heures, mais là je donne ma langue au chat. :(
Je vous explique mon problème.
 
Je dois, dans un texte, retrouver toutes les occurences d'un mot. Jusque là rien de bien compliqué.
Mais il y a plusieurs règles qui entrent en jeu pour que le mot soit matché.
 
Le mot ne peut en aucun cas être entouré d'une balise <a>. Le mot ne peux en aucun cas être précédé/suivi d'un caractère alphanumerique.
Voici un exemple de ce qui doit matcher et de ce qui ne doit pas matcher pour la chaîne "abc" :
 
 


<a>abc</a>  -> 0
<a>abcde</a>  -> 0
xyzabc123   -> 0
abc    -> 1
xyz abc 123  -> 1
<p>abc</p>  -> 1
<p>abc abc</p>  -> 1
<p>xyz abc 123</p> -> 1


 
 
 
Mon problème vient du fait que je n'arrive pas à mettre en musique ces deux conditions...
 
J'avais à la base écrit ceci comme regexp :
 

Code :
  1. $pattern='/(<a[^>]*> )?(abc)(<\/a> )?/i';


 
Mais avec ce pattern ci, les chaines suivantes vont matcher :


xyzabc123  
<p>xyzabc123</p>


 
Donc voilà si vous avez une idée, votre aide me serait vraiment très précieuse...  
 
Un grand merci d'avance à tout ceux qui tenteront de m'aider :)
 
V.

Message cité 1 fois
Message édité par Vitaminae le 09-12-2009 à 12:18:08

---------------
Humour :: http://www.chadechire.com
mood
Publicité
Posté le 24-08-2009 à 15:28:36  profilanswer
 

n°1918690
theredled
● REC
Posté le 26-08-2009 à 23:26:12  profilanswer
 

Vitaminae a écrit :


Mais avec ce pattern ci, les chaines suivantes vont matcher :


xyzabc123  
<p>xyzabc123</p>



 

Normal, ces chaines remplissent les conditions énoncées :

 
Citation :

Le mot ne peut en aucun cas être entouré d'une balise <a>. Le mot ne peux en aucun cas être précédé/suivi d'un caractère alphanumerique.

 

[:spamafoote]

 

T'as du oublier des conditions... Pour moi, d'après ce que tu décris, ça marche :D

Message cité 1 fois
Message édité par theredled le 26-08-2009 à 23:27:00

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1918753
Vitaminae
Posté le 27-08-2009 à 10:14:23  profilanswer
 

theredled a écrit :


 
Normal, ces chaines remplissent les conditions énoncées :
 

Citation :

Le mot ne peut en aucun cas être entouré d'une balise <a>. Le mot ne peux en aucun cas être précédé/suivi d'un caractère alphanumerique.




 
Salut et merci pour ta réponse.
 
Non vu que il y a des lettres devant et derrière la chaîne abc et ca match quand même hors je ne veux pas que ca matche et je n'arrive pas a faire cohabiter les deux conditions (celle là et celle de la balise <a> ). C justement ca mon soucis
 
Donc :
 
azabcde  ne doit pas matcher (or la ca matche)
 
abc doit matcher
 
en gros ca doit matcher que si le mot est vraiment un mot et pas un mot composé...
 
 
V.

Message cité 1 fois
Message édité par Vitaminae le 09-12-2009 à 12:18:32

---------------
Humour :: http://www.chadechire.com
n°1918762
theredled
● REC
Posté le 27-08-2009 à 10:20:46  profilanswer
 

Vitaminae a écrit :


 
Salut et merci pour ta réponse.
 
Non vu que il y a des lettres devant et derrière la chaîne abc et ca match quand même hors je ne veux pas que ca matche et je n'arrive pas a faire cohabiter les deux conditions (celle là et celle de la balise <a> ). C justement ca mon soucis
 
Donc :
 
azabcde  ne doit pas matcher (hors la ca matche)
 
abc doit matcher
 
en gros ca doit matcher que si le mot est vraiment un mot et pas un mot composé...
 
 
V.


Concrètement, le mot est prévu à l'avance, et c'est toujours "abc" ?


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1918767
Vitaminae
Posté le 27-08-2009 à 10:47:42  profilanswer
 

On va dire que oui car le pattern que je génère, c'est avec une variable c'est pour ca que dans mon exemple j'ai mis "abc".
 
en fait j'ai une liste de mots et je génère le pattern à utiliser pour chaque mots.
 
Pour simplifier mon explication j'ai donc mis abc car c pas le soucis ;)
 
Merci à toi.
 
V.


Message édité par Vitaminae le 27-08-2009 à 10:49:59
n°1918771
theredled
● REC
Posté le 27-08-2009 à 10:54:18  profilanswer
 

J'ai pas trop le temps, mais tu peux p-e aller voir du côté des assertions lookahead/lookbehind  
http://www.regular-expressions.info/lookaround.html


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1918790
Vitaminae
Posté le 27-08-2009 à 11:37:47  profilanswer
 

Bingo. Je ne connaissais pas les assertions, j'ai résolu mon problème, merci beaucoup !!! :)
 
Si ça peut aider quelqu'un un jour :
 

Code :
  1. $pattern='/(<a[^>]*> )?((?<!(\w))abc(?!(\w)))(<\/a> )?/i';


Message édité par Vitaminae le 09-12-2009 à 12:18:44

---------------
Humour :: http://www.chadechire.com
n°1918796
theredled
● REC
Posté le 27-08-2009 à 12:13:18  profilanswer
 

Ah bah nickel :D


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [Résolu] Expressions régulières... je bloque. :(

 

Sujets relatifs
[Résolu] CSS lien en block absolu sur IE[Résolu][MySQL] Jointure à 5 tables
[RESOLU]couper un stringIntitulé d'un évènement sur 2 listes déroulantes [RESOLU]
[Résolu] [vba] aide à la syntaxe pour la dimension d'un tableau[Résolu] Placer le code source d'une page web en buffer (Winnet)
[VBS] Comparaison de dates (résolu)Menustrip à placer n'importe où [RESOLU]
[Résolu] Commander une LED reliée au port //Fichier excel généré qui a une taille anormale [RESOLU]
Plus de sujets relatifs à : [Résolu] Expressions régulières... je bloque. :(


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR