cs_bastoun
Messages postés164Date d'inscriptiondimanche 1 octobre 2000StatutMembreDernière intervention23 mars 20071 21 oct. 2005 à 23:53
D'ailleurs il y a même des livres sur le sujet
Avant d'aller te perdre sur le net, tu peux aussi utiliser la doc en
ligne de Coldfusion qui est pas mal fournie (dans la partie Developing
ColdFusion MX Applications > Using Regular Expressions in Functions).
Tu verras, ce que j'ai utilisé y est expliqué.
Si tu veux avoir des tonnes d'explications sur les regexp tu peux aussi
chercher dans la doc de PERL, où les regexp sont trés utilisées.
Attention cependant, les langages ont souvent une implémentation
spécifique (une backreference en perl est $1, je crois et en CF c'est
\1 , par exemple)
alors 'tite explication:
\A : en debut de regexp, indique que c'est le debut de chaine, le fait
de le mettre entre parethèse le fait être considéré comme un groupe
d'expression
(?=;) : signifie 'suivi de ;' Les parenthèses ici sont obligatoire et
n'en fait pas un groupe (important à savoir pour les histoires de
références).
(\A)(?=;) signifie donc début de chaine suivi d'un ; (attention, ça ne
veut pas dire début de chaine commençant avec un ; .. petite nuance qui
fait la différence en regexp)
| : signifie Ou
(;) : pour chercher un ; et le référencer en tant que groupe
$ : en fin de regexp, indique en fin de chaine
\x, où x est un chiffre, reférence correspondant au groupe dans l'ordre
à l'intérieur de la regexp. Permet ainsi de réafficher l'expression
trouvée (donc soit début de chaine avec (\A) qui est le premier groupe
soit (;) avec \2 et \3 qui sont groupes 2 et 3
Donc la regexp signifie Recherche
soit :
- un debut de chaine, suivi d'un ;
- un ; suivi d'un autre ;
- un ; en fin de chaine
et les remplace par eux même, avec un espace après.
syndrael
Messages postés2378Date d'inscriptionlundi 4 février 2002StatutMembreDernière intervention29 décembre 201220 19 oct. 2005 à 22:21
Tu as le choix entre deux replace imbriqués l'un dans l'autre, soit un
REReplace avec l'expression régulière k'une dure journée de labeur
m'empeche de te fournir.
donc à titre pallaitif fais replace(';;','; ;',replace(';;',';
;',toto)).. Par contre attention à lam ontée en charge en fonciton de
ta chaine.
S.
PS: dans le REReplace tu dois avoir un [;]{2}+ il me semble..
cs_bastoun
Messages postés164Date d'inscriptiondimanche 1 octobre 2000StatutMembreDernière intervention23 mars 20071 20 oct. 2005 à 01:42
bon, voilà de quoi résoudre le problème
rereplace(liste,'^(?=;)|;(?=;)|;$','; ','ALL')
traduction :
si la chaine commence par rien, suivi d'un pointvirgule(bref commence
par un point virgule ,mais ici il est important de dire que ça commence
par rien), ça remplace le rien par un point virgule plus un espace
(pour pouvoir compter l'éléement)
si il y a un point virgule, suivi d'un autre point virgule, ça remplace
le premier point virgule par un point virgule plus un espace
si la chaine fini par un point virgule, ça le remplace par un point virgule suivi d'un espace
Attention cependant, de ne pas itérer ce remplacement, car si le
premier éléement est vide, cela rajoutera un élément vide en plus au
début à chaque itération...
cs_bastoun
Messages postés164Date d'inscriptiondimanche 1 octobre 2000StatutMembreDernière intervention23 mars 20071 20 oct. 2005 à 10:50
Je ne viens pas d'ailleurs alors ???
c'est vrai que mes collègues me trouvent bizarre dés que je m'exprime régulièrement (euh... non.... dés que j'utilise des expressions régulières.... quoique... si quand même.. dans les deux cas )
Pierre_faucon
Messages postés96Date d'inscriptionjeudi 10 juin 2004StatutMembreDernière intervention22 mai 2007 21 oct. 2005 à 11:23
Chapeau et merci
Cela étant, je ne comprends pas l'expression régulière...
Dans l'aide de Dreamweaver, point de \A, de (?=$) et autres...
Pourrais-tu me l'expliquer en détails?
En tout cas, merci infiniment. Je ne connaissais pas les expressions régulières et, suite à ta réponse, j'ai envie de m'y mettre car c'est manifestement puissant...
nickadele
Messages postés1251Date d'inscriptionmercredi 7 août 2002StatutModérateurDernière intervention10 avril 2013 21 oct. 2005 à 11:39
Il ne s'agit pas d'une solution Dreamweaver, c'est une fonction qui existe dans différents language de programmation, Java, JavaScript, VB, Php...
On pourrait écrire un livre sur le sujet !
Pour te donner une idée de l'ampleur et des possibilités va déjà voir ceci :
http://www.commentcamarche.net/javascript/jsregexp.php3 C'est assez basic mais ça te donnera déjà une idée du problème !