Dans un
précédent article, je donnais la solution à une recherche par
expression régulière, mais sans la comprendre. Nous voulions repérer la non présence d'un sous motif. La solution ressemblait à ca :
J'ai enfin trouvé
une page où ceci est expliqué plus en détail. Nous avons affaire aux
motifs étendus ; la page en question explique les expressions régulières en perl (sur lesquelles se base maintenant le php).
Donc les explications du motif précédent, qui de plus ne peut pas marcher pas tout seul (il doit être précédé de quelque chose).
(?: )C'est un motif comme les parenthèses simples ( ) , sauf qu'il n'est pas mémorisé, c'est à dire qu'il n'est pas compté dans les variables qui servent au remplacement. Jusqu'ici, pas de problème.
(?! )Nous nous doutions qu'il s'agissait de la négation du motif à l'intérieur. L'explication dit joliment :
Une assertion de longueur nulle pour tester l'absence de quelque chose en avant.
Elle est nulle car elle n'est pas comptée. L'absence en avant veut dire qu'elle n'est valable que pour tester la non présence de quelque chose qui suit le motif que l'on recherche, on ne peut pas s'en servir tout seul. Mais ca ne nous dérange pas dans notre cas, c'est bien ce qu'on veut (chercher les
& non suivis de
amp; ou
gt; par exemple, pour les remplacer )
Donc notre problème précédent aurait pu être résolu grâce à ceci :
/&(?![a-z#]+;)/&/
Après un court test,ca marche, du moins en perl. Donc la solution est moins compliquée que ce que nous avions trouvé ! Somme toute, les expressions relationnelles (ou régulières, c'est la même chose), c'est simple.
En
conclusion, je ne peux résister à vous livrer une phrase à la fin de la longue page que j'ai trouvée (et mise en lien). Comme c'est souvent le cas, ce genre de manuel est suivi d'une section "Bugs". La voici :
Le niveau de ce document varie de ``difficile à comprendre'' jusqu'à ``totalement opaque''. La prose divaguante et criblée de jargon est difficile à interpréter en divers endroits.
lol
Réactions
1. legolas le 24-06-2006 à 17:06:05
je n'ai compris ni le sens de ce commentaire, ni le rapport avec mon article. Pourriez-vous m'eclairer ?
2. nine le 01-07-2006 à 15:13:25
c'est mr connard qui fait sa pub pour son site de m...
3. qqun le 01-07-2006 à 15:14:52 (site)
j'ai meme pas fait gafe, d'autres blogs avaient été spammés ?
Bon, je vire son comm qui de toutes facons ne veut rien dire !