L'approche consistant à supprimer les personnages fautifs est potentiellement problématique. Et s'il y en avait un autre .
dans la chaîne quelque part? Il ne sera pas supprimé, bien qu'il le soit!
En supprimant les non-chiffres ou les points, la chaîne joe.smith ($3,004.50)
se transformerait en non analysable .3004.50
.
Imho, il est préférable de faire correspondre un modèle spécifique et de l'extraire en utilisant un groupe. Quelque chose de simple serait de trouver toutes les virgules, chiffres et points contigus avec l'expression rationnelle:
[\d,\.]+
Exemple de test:
Pattern understood as:
[\d,\.]+
Enter string to check if matches pattern
> a2.3 fjdfadfj34 34j3424 2,300 adsfa
Group 0 match: "2.3"
Group 0 match: "34"
Group 0 match: "34"
Group 0 match: "3424"
Group 0 match: "2,300"
Ensuite, pour chaque correspondance, supprimez toutes les virgules et envoyez-les à l'analyseur. Pour gérer le cas de quelque chose comme 12.323.344
, vous pouvez faire une autre vérification pour voir qu'une sous-chaîne correspondante en a au plus une .
.
joe.smith ($3,004.50)
? Le simple fait de supprimer les classes de caractères incriminées peut être très faux.