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

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!

The following two tabs change content below.
Arquiteto de Software e Desenvolvedor Backend (quase Fullstack), geralmente trabalho com C#, PowerShell, Python, Golang, bash e Unity (esse é mais por hobby). Estou sempre buscando algo novo para aprender, adicionando novas ferramentas ao meu cinto de utilidades.
Posted in Conhecimento Técnico, Dev and tagged , , , .