[Resolvido] Usando regex para colocar datas entre aspas. (Regex/Notepad++)

[Resolvido] Usando regex para colocar datas entre aspas. (Regex/Notepad++)

Overview

Você já se deparou com aquele monte de dados para inserir no banco e percebeu que as datas estavam todas sem aspas? Neste post light-hearted, mas com uma pegada séria, vou mostrar como resolver esse problema de forma rápida e descomplicada usando regex e o Notepad++. Prepare-se para economizar um precioso tempo sem sacrificar a precisão!

Situação: Estava com uma lista de inserts (para um banco SQLITE3), mas os campos de data estavam sem aspas e isso gerava erros na hora de executar os comandos.

Para resolver o problema sem ter que gastar muito tempo ou esforço, resolvi utilizar regex e o Notepad++.

Antes de mostrar a sintaxe, é importante ressaltar que todas as datas estavam no mesmo padrão:

  • aaaa-mm-dd hh:MM:ss.ffffff

Exemplo:

  • 2018-12-31 23:59:30.475863

Isso tornou o processo todo bem simples.

(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d{6})

A sintaxe acima significa:

  • (: Inicio da captura de um grupo
  • \d{4}: conjunto com 4 caracteres numéricos (ano)
  • : caractere hífen
  • \d{2}: conjunto com 2 caracteres numéricos (mês)
  • : caractere hífen
  • \d{2}: conjunto com 2 caracteres numéricos (dia)
  • : caractere espaço (também poderia ser \s{1}, mas como é apenas 1 espaço, não tem necessidade)
  • \d{2}: conjunto com 2 caracteres numéricos (horas)
  • :: caractere dois pontos
  • \d{2}: conjunto com 2 caracteres numéricos (minutos)
  • :: caractere dois pontos
  • \d{2}: conjunto com 2 caracteres numéricos (segundos)
  • .: caractere ponto
  • \d{6}: conjunto com 6 caracteres numéricos (milisegundos)
  • ): Final da captura de um grupo

A sintaxe acima deve ser colocada no campo “Find what” (ou Procurar por) da tela de substituição de texto do Notepad++.

No campo “Replace with” (Substituir por), insira a sintaxe abaixo:

'\1'

Bem simples, certo? Esta sintaxe significa que o conteúdo do primeiro grupo que foi capturado anteriormente (o que estava entre parenteses) vai ser escrito entre aspas simples.

Clique no botão “Replace All” (Substituir todos) e pronto. Todas as datas (que estiverem neste formato) serão atualizadas e colocadas entre aspas simples.

Para quem não está acostumado com regex, quando digo que “o conteúdo do primeiro grupo…” é por que você pode, em apenas uma sintaxe, capturar diversos grupos. Basta utilizar várias sintaxes entre parenteses, mas não vou entrar neste nível de detalhes, pois não é o foco do post. (Se precisar, só avisar que eu faço um novo post.)

Espero ter ajudado!