Ajuda para extrair dados do clipboard Topic is solved

Tire suas dúvidas sobre programação em AutoHotkey

Moderator: Gio

Killin
Posts: 7
Joined: 27 Sep 2021, 18:28

Ajuda para extrair dados do clipboard

Post by Killin » 27 Sep 2021, 19:34

Trabalho num terminal e gostaria de copiar a página que estivesse trabalhando e extrair os dados que tivesse interesse.

Na verdade, eu até consegui fazer isso, mas eu queria aprender a configurar o comando o comando RegExMatch() para encontrar um determinado n.º de caracteres após uma palavra, independente de ser espaços em branco, traços, ou outro caractere. Por exemplo, certo código no terminal pode variar de tamanho, mas não ultrapassa um determinado número de caracteres, e o padrão final também pode mudar, as vezes termina em 0001 - 1 (com espaço separando os dígitos do traço) , e outras vezes 0001-1 (sem espaços separando os dígitos do traço.

Deixe eu mostrar um exemplo fictício do como pode aparecer no terminal (esse texto está num bloco de notas para testes):


código1: R1P1CD8 código2: BC2140100MR0160JB código3: 01254555555
Data emissao: 18 / 03 / 2021
CPF/CNPJ: 149.437.016-45

>>>>>>>> código4: 21301113663 - 1 <<<<<<<<<


E esse é o código que copia o texto e extrai os dados:

Code: Select all

^j::
Send,^a
sleep, 100
  Send,^c
  ClipWait,2
  theData = %clipboard%
p := RegExMatch(theData, "i)código1: \K\w+\w\w\w\w", código1v)
MsgBox, % código1v
q := RegExMatch(theData, "i)código2: \K\w{17}+", código2v)
MsgBox, % código2v 
r := RegExMatch(theData, "i)código3: \K\S+", código3v)
MsgBox, % código3v
s := RegExMatch(theData, "i)CPF/CNPJ: \K\S{14,20}", CPF_CNPJv)
MsgBox, % CPF_CNPJv
t := RegExMatch(theData, "i)código4: \K\d{10,16}\ \-\ \w+", código4v)
MsgBox, % código4v
return
O meu problema está nesse "código4" quando o valor varia. O tamanho do campo é sempre o mesmo, cabem 15 caracteres. Eu queria configurar para capturar 15 caracteres após "código4:", independente do tipo de caractere. Podem me ajudar nisso?

Me perdoem se ficou confuso, sou novo nisso.

Desde já, agradeço.

User avatar
Gio
Posts: 1247
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: Ajuda para extrair dados do clipboard  Topic is solved

Post by Gio » 29 Sep 2021, 15:53

Boa tarde Killin.

Segue um exemplo em código:

Code: Select all

dados =
(
código1: R1P1CD8 código2: BC2140100MR0160JB código3: 01254555555
Data emissao: 18 / 03 / 2021
CPF/CNPJ: 149.437.016-45

>>>>>>>> código4: 21301113663 - 1 <<<<<<<<<
)

Posicao := RegExMatch(dados, "código4:\s.{15}", Resultado)  ; "código4, seguido de um espaço, seguido de 15 caracteres quaisquer". O símbolo do ponto no RegEx significa "qualquer caractere" e o {15} significa "exatamente 15 do anterior" (ou seja, é o mesmo que dizer 15 pontos ou 15 caracteres).

StringTrimLeft, Resultado, Resultado, 9 ; Removemos 9 caracteres à esquerda da variável Resultado, pois sabemos que isso sempre corresponde sempre à:  "código4, seguido de um espaço". Logo, o que resta é apenas o código em si.

msgbox % Resultado ; E finalmente exibimos o código 4 isolado em uma msgbox..
Veja nos comentários as explicações.

Espero ter ajudado, se ainda tiver alguma dúvida, basta postar abaixo :thumbup:

Killin
Posts: 7
Joined: 27 Sep 2021, 18:28

Re: Ajuda para extrair dados do clipboard

Post by Killin » 29 Sep 2021, 20:04

Muito obrigado Gio. Estou conseguindo evoluir muito lendo suas postagens. Fico impressionado com sua dedicação ao fórum

Post Reply

Return to “Ajuda e Suporte Geral”