Avant toute chose pour écrire un point dans une expression régulière tu dois l'échapper et donc écrire
\.. Le point (sans échappement) est un caractère spécial qui signifie n'importe quel caractère sauf le saut de ligne.
Pour faire ton remplacement tu dois utiliser des captures. Une capture est une partie de ton expression régulière que tu places entre parenthèses pour pouvoir t'y référer plus tard. Ce qui donne:
([0-9])\.([0-9])
Les groupes de captures sont numérotés gauche vers la droite en fonction de la position de la parenthèse ouvrante. Donc ton remplacement sera:
$1,$2
Maintenant attention aux pièges que peux contenir ton texte comme par exemple un numéro de téléphone écrit sous cette forme:
06.12.12.12.12 où tous les points seront changés également en virgules. Pour éviter ces désagréments, il ne faut pas hésiter à être le plus descriptif possible, par exemple:
Ce qui s'écrit de cette manière:
(?<![.0-9])([0-9]+)\.([0-9]+)(?![.0-9])
Pour exprimer
un ou plusieurs on utilise le quantificateur
+.
(?<!...) est un test arrière négatif
(non précédé par) et
(?!...) est un test avant négatif
(non suivi par). C'est deux tests ne consomment pas de caractères.
Remarque: dans une classe de caractère, le point n'a plus de signification spécial, pas besoin de l'échapper.
Partager