L'approccio alla rimozione dei personaggi offensivi è potenzialmente problematico. E se ce ne fosse un altro .nella stringa da qualche parte? Non verrà rimosso, anche se dovrebbe!
Rimuovendo le non cifre o i punti, la stringa joe.smith ($3,004.50)si trasformerebbe nel non analizzabile .3004.50.
Imho, è meglio abbinare uno schema specifico ed estrarlo usando un gruppo. Qualcosa di semplice sarebbe trovare tutte le virgole, le cifre e i punti contigui con regexp:
[\d,\.]+
Esempio di esecuzione di prova:
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"
Quindi, per ogni corrispondenza, rimuovi tutte le virgole e invialo al parser. Per gestire il caso di qualcosa di simile 12.323.344, potresti fare un altro controllo per vedere che una sottostringa corrispondente ne ha al massimo una ..
joe.smith ($3,004.50)? La semplice rimozione delle classi di personaggi offensivi può andare abbastanza storto.