Hoje o problema foi diferente, tenho uma planilha gerada do resultado de um SQL. Salvei o resultado num CSV mas quando eu abro ele numa planilha (Calc do OO por exemplo) as colunas com números decimais abrem com o tipo data, pois no formato brasileiro se usa virgula pra separar decimais. Bom, preciso substituir todas as ocorrências de . por , no meu CSV. O problema é que a substituição tem que ser somente para números, por ex “Sr. Fábio” o ponto teria que ser mantido.
Pra resolver isso, usa-se a expressão regular com retrovisores. Eu testei no Kate (do KDE) e no Eclipse mas acredito que funcione na maioria dos editores que suportem expressão regular. Bom, então abri o texto no editor, fui em Editar -> Substituir, e marquei a opção de expressão regular.
No campo de busca coloquei:
([0-9])(\.)([0-9])
E no de substituição:
\1,\3
Ou seja, o \1 e o \3 são os retrovisores que tem que ser mantidos na substituição.
Claro, poderia fazer a substituição no próprio SQL, no meu caso, no PostgreSQL, poderia usar a função:
replace(valor::text, '.', ',')
onde valor é o nome do meu campo do tipo float.