Ajuda com RegEx Topic is solved

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

Moderator: Gio

claudiosxj
Posts: 11
Joined: 08 Dec 2020, 12:41

Ajuda com RegEx

05 Jan 2022, 10:30

Boa tarde!!! e Feliz ano novo :bravo: .

Amigos estou tentado usar RegEx em um retorno de um JSON mas não estou conseguindo, então preciso de uma ajudar!


→ Seguinte eu estou conseguindo coletar umas informar por JSON de uma API, o Código da API que estou utilizando.

Code: Select all


ResponseFile:="DocparserTest.txt"
	FileDelete,%ResponseFile%
	
	whr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
	whr.Open("POST", "https://portaldoassinante.americanet.com.br/SimetraRestRedeTelecom?sUser=integracao.redetelecom.producao&sSenha=")
	whr.SetRequestHeader("Content-Type", "application/json")
	body = {"COD_CNTR" : "533334"}
	whr.Send(body)
	
	dados = % whr.ResponseText
	
	FileAppend,%dados%,%ResponseFile%
	MsgBox, %dados%


→ E tenho este retorno a baixo
{ "requisicao":{ "CNPJ_CPF_CLIE":"", "COD_CNTR":"532844", "COD_CLIE":"" }, "retorno":{ "codigo":"0", "mensagem":"CONSULTA REALIZADA COM SUCESSO" }, "FAT_CLIENTE":{ "COD_CLIE":4128171, "CNPJ_CPF_CLIE":"46153264838", "IE_RG_CLIE":"11111111", "RZAO_SOCL_CLIE":"PESSOA QUALQUER NOME", "DAT_NASC":"1117-11-27", "ENDER_FAT_LOGR_NOM":"ACDMUO DE CASTILHO", "ENDER_FAT_NUM":"2405", "ENDER_FAT_CEP":"79641160", "ENDER_FAT_BAIR_NOM":"NOSSA SENHORA DAS GRACAS", "ENDER_FAT_CDE_NOM":"TRES LAGOAS", "ENDER_FAT_UF":"MS", "STATUS":"ATIVO", "TELEFONE1":"", "TELEFONE2":"", "TELEFONE3":"18999999479", "TELEFONE4":"", "ASSINANTE_EMAIL":"thjasdqwhegqwe@hotmail.com" }, "FAT_CONTRATO":[ { "COD_CNTR":596824, "DESCR_STAT_CNTR":"ATIVO", "COD_CNTR_UNICO":"A461722228001", "DAT_CNTR":"2020-10-09T00:00:00.000", "DAT_ATIV_CNTR":"2021-02-01T00:00:00.000", "DAT_INIC_COBR":"2021-02-15T00:00:00.000", "DAT_CANCL":"0000-00-00T00:00:00.000", "VLR_CNTR":92.77, "PRODUTO_NOME":"REDE | FIBRA REDE 120 201908", "DIA_VENC":15, "FORM_PAGTO":"BOLETO", "DESCR_DESIG_CNTR":"08UKJQDSUM", "ENDER_COB_LOGR_TIPO":"RUA", "ENDER_COB_LOGR_NOM":"ALFREDO DA CASTUNS", "ENDER_COB_NUM":"3105", "ENDER_COB_COMPL":"CASA", "ENDER_COB_BAIR_NOM":"NOSSA FNCDBUE DAS GRYTNG", "ENDER_COB_CDE_NOM":"TRES RFDVXS", "ENDER_COB_UF":"MS", "ENDER_COB_CEP":"79620160", "EMPRESA_CNPJ":"04.763.412\/0011-35", "EMPRESA_RAZAO_SOCIAL":"RRFE BVDXWTIVIDADE LTDA", "COD_CLIE_CARTAO":0, "COD_APP_EXTERNO":"", "USUR_APP":"", "SEN_APP":"", "FAT_CONTRATO_ITEM":[ { "COD_CNTR_ITEM":852054, "COD_PROD":2450, "NOM_PROD":"REDE | FIBRA REDE 120 201908", "COD_POLICY":"HIDB0LQ2DI", "DESIGNACAO_TECNICA":"", "REFERENCIA_CLIENTE":"08UKJQDSUM", "ENDER_INSTALACAO_LOGR_TIPO":"RUA", "ENDER_INSTALACAO_LOGR_NOM":"FVWSEDO DE CASTILHO", "ENDER_INSTALACAO_NUM":"5535", "ENDER_INSTALACAO_COMPL":"CASA", "ENDER_INSTALACAO_BAIR_NOM":"SXBH SWSXZRA DAS ONEAS", "ENDER_INSTALACAO_CDE_NOM":"TRES ELJCBG", "ENDER_INSTALACAO_UF":"MS", "ENDER_INSTALACAO_CEP":"75432160", "COD_MAC_ADDRESS":"DE30G9SD2F9A", "COD_MAC_ADDRESS_SERIALNUMBER":"e0-13-b3-dc-cf-23", "COD_MAC_ADDRESS_ATA":"", "COD_MAC_ADDRESS_ROTEADOR":"", "COD_MAC_ADDRESS_ROTEADOR_SERIALNUMBER":"", "NUM_IP_POP":"10.111.0.00", "NUM_SLOT":"12", "NUM_PON":"4", "USUR_PPPOE":"thasdanaasdxzc@asdasdade.com.br", "SEN_PPPOE":"31197", "LISTA_IP":"" } ] } ] }
:thumbdown: Problema?

Eu gostaria de retirar as informações que eu destaquei em vermelho no texto a cima, eu montei algumas Regex para retirar as informações, só que não consegui aplicar em HAK
Regex para pegar o NOME: ("RZAO_SOCL_CLIE":)"[A-Z ]*"
RegEx para pegar o email: ("USUR_PPPOE":")[a-z0-9.]+@[a-z0-9]+\.[a-z]+.[a-z]+"
RegEx para pegar o CPF: ("CNPJ_CPF_CLIE":")[0-9]{11}"

Meu Obje é basicamente retirar essas informações deste texto, como? eu não sei, se alguém puder me ajudar ficarei grato :bravo:

Mod Edit: Possível senha removida do código.
thalesduarte
Posts: 95
Joined: 13 Sep 2021, 06:08

Re: Ajuda com RegEx

05 Jan 2022, 14:15

Fiz alguns testes com essa maneira de regex.
Não sei se é a melhor, porém deu certo aqui para o resultado que você quer.

Code: Select all

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
F3::
FileRead, texto, %A_ScriptDir%/txt.txt ; Aqui basicamente é o código que você colocou, no lugar do texto, vc coloca a resposta do seu código

NOME := RegExMatch(texto, "(.RZAO_SOCL_CLIE.:)\K.[A-Z ]*.", PegarNome)
EMAIL := RegExMatch(texto, ".USUR_PPPOE..\K.[a-z0-9.]+@[a-z0-9]+\.[a-z]+.[a-z]+.", PegarEmail)
CPF := RegExMatch(texto, ".CNPJ_CPF_CLIE.:\K.[0-9]{11}.", PegarCPF)


MSGBOX %PegarNome%
MSGBOX %PegarEmail%
MSGBOX %PegarCPF%
User avatar
Gio
Posts: 1248
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: Ajuda com RegEx  Topic is solved

05 Jan 2022, 16:46

O RegEx do Thalesduarte funcionou muito bem aqui.

DICA: Se quiser remover as aspas duplas depois de coletar os dados (ou qualquer outro resquício de RegEx usado somente para posicionamento) basta utilizar os comandos StringTrimRight e StringTrimLeft.

Code: Select all

VAR_TEXTO =
(
{ "requisicao":{ "CNPJ_CPF_CLIE":"", "COD_CNTR":"532844", "COD_CLIE":"" }, "retorno":{ "codigo":"0", "mensagem":"CONSULTA REALIZADA COM SUCESSO" }, "FAT_CLIENTE":{ "COD_CLIE":4128171, "CNPJ_CPF_CLIE":"46153264838", "IE_RG_CLIE":"11111111", "RZAO_SOCL_CLIE":"PESSOA QUALQUER NOME", "DAT_NASC":"1117-11-27", "ENDER_FAT_LOGR_NOM":"ACDMUO DE CASTILHO", "ENDER_FAT_NUM":"2405", "ENDER_FAT_CEP":"79641160", "ENDER_FAT_BAIR_NOM":"NOSSA SENHORA DAS GRACAS", "ENDER_FAT_CDE_NOM":"TRES LAGOAS", "ENDER_FAT_UF":"MS", "STATUS":"ATIVO", "TELEFONE1":"", "TELEFONE2":"", "TELEFONE3":"18999999479", "TELEFONE4":"", "ASSINANTE_EMAIL":"thjasdqwhegqwe@hotmail.com" }, "FAT_CONTRATO":[ { "COD_CNTR":596824, "DESCR_STAT_CNTR":"ATIVO", "COD_CNTR_UNICO":"A461722228001", "DAT_CNTR":"2020-10-09T00:00:00.000", "DAT_ATIV_CNTR":"2021-02-01T00:00:00.000", "DAT_INIC_COBR":"2021-02-15T00:00:00.000", "DAT_CANCL":"0000-00-00T00:00:00.000", "VLR_CNTR":92.77, "PRODUTO_NOME":"REDE | FIBRA REDE 120 201908", "DIA_VENC":15, "FORM_PAGTO":"BOLETO", "DESCR_DESIG_CNTR":"08UKJQDSUM", "ENDER_COB_LOGR_TIPO":"RUA", "ENDER_COB_LOGR_NOM":"ALFREDO DA CASTUNS", "ENDER_COB_NUM":"3105", "ENDER_COB_COMPL":"CASA", "ENDER_COB_BAIR_NOM":"NOSSA FNCDBUE DAS GRYTNG", "ENDER_COB_CDE_NOM":"TRES RFDVXS", "ENDER_COB_UF":"MS", "ENDER_COB_CEP":"79620160", "EMPRESA_CNPJ":"04.763.412\/0011-35", "EMPRESA_RAZAO_SOCIAL":"RRFE BVDXWTIVIDADE LTDA", "COD_CLIE_CARTAO":0, "COD_APP_EXTERNO":"", "USUR_APP":"", "SEN_APP":"", "FAT_CONTRATO_ITEM":[ { "COD_CNTR_ITEM":852054, "COD_PROD":2450, "NOM_PROD":"REDE | FIBRA REDE 120 201908", "COD_POLICY":"HIDB0LQ2DI", "DESIGNACAO_TECNICA":"", "REFERENCIA_CLIENTE":"08UKJQDSUM", "ENDER_INSTALACAO_LOGR_TIPO":"RUA", "ENDER_INSTALACAO_LOGR_NOM":"FVWSEDO DE CASTILHO", "ENDER_INSTALACAO_NUM":"5535", "ENDER_INSTALACAO_COMPL":"CASA", "ENDER_INSTALACAO_BAIR_NOM":"SXBH SWSXZRA DAS ONEAS", "ENDER_INSTALACAO_CDE_NOM":"TRES ELJCBG", "ENDER_INSTALACAO_UF":"MS", "ENDER_INSTALACAO_CEP":"75432160", "COD_MAC_ADDRESS":"DE30G9SD2F9A", "COD_MAC_ADDRESS_SERIALNUMBER":"e0-13-b3-dc-cf-23", "COD_MAC_ADDRESS_ATA":"", "COD_MAC_ADDRESS_ROTEADOR":"", "COD_MAC_ADDRESS_ROTEADOR_SERIALNUMBER":"", "NUM_IP_POP":"10.111.0.00", "NUM_SLOT":"12", "NUM_PON":"4", "USUR_PPPOE":"thasdanaasdxzc@asdasdade.com.br", "SEN_PPPOE":"31197", "LISTA_IP":"" } ] } ] }
)

RegExMatch(VAR_TEXTO, "(.RZAO_SOCL_CLIE.:)\K.[A-Z ]*.", PegarNome)
StringTrimLeft, PegarNome, PegarNome, 1
StringTrimRight, PegarNome, PegarNome, 1
msgbox % PegarNome
RegExMatch(VAR_TEXTO, ".USUR_PPPOE..\K.[a-z0-9.]+@[a-z0-9]+\.[a-z]+.[a-z]+.", PegarEmail)
StringTrimLeft, PegarEmail, PegarEmail, 1
StringTrimRight, PegarEmail, PegarEmail, 1
msgbox % PegarEmail
RegExMatch(VAR_TEXTO, ".CNPJ_CPF_CLIE.:\K.[0-9]{11}.", PegarCPF)
StringTrimLeft, PegarCPF, PegarCPF, 1
StringTrimRight, PegarCPF, PegarCPF, 1
msgbox % PegarCPF
claudiosxj
Posts: 11
Joined: 08 Dec 2020, 12:41

Re: Ajuda com RegEx

06 Jan 2022, 10:27

Agradeço imensamente a ajuda dos 2.

se tiver algum lugar que eu possa aprender a como colocar as expressões regulares de uma forma correta, por que juro que tinha tentado de todas as formas mas sempre dava um erro de sintaxe
claudiosxj
Posts: 11
Joined: 08 Dec 2020, 12:41

Re: Ajuda com RegEx

06 Jan 2022, 13:31

Gostaria de uma outra ajuda em uma sintaxe, que não consegui.

Code: Select all

	
	whr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
	whr.Open("POST", "https://portaldoassinante.americanet.com.br/SimetraRestRedeTelecom?sUser=integracao.redetelecom.producao&sSenha=amnet2030rede@!!@202799&sNomeProc=REDE_CLIENTE_CONSULTAR")
	whr.SetRequestHeader("Content-Type", "application/json")
	[color=#FF0000]body = {"COD_CNTR" : "53335" }[/color]
	whr.Send(body)
	

Como que eu faria para mandar o valor de uma váriavel ao invés de um valor fixo?

Code: Select all

	
	whr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
	whr.Open("POST", "https://portaldoassinante.americanet.com.br/SimetraRestRedeTelecom?sUser=integracao.redetelecom.producao&sSenha=amnet2030rede@!!@202799&sNomeProc=REDE_CLIENTE_CONSULTAR")
	whr.SetRequestHeader("Content-Type", "application/json")
	[color=#FF0000]body = {"COD_CNTR" : "%Scontrato%" }[/color]
	whr.Send(body)
	

Obviamente que o comando a cima não funcionou, agradeço.
thalesduarte
Posts: 95
Joined: 13 Sep 2021, 06:08

Re: Ajuda com RegEx

07 Jan 2022, 06:51

Bom dia.
Tenta assim

Code: Select all

	whr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
	whr.Open("POST", "https://portaldoassinante.americanet.com.br/SimetraRestRedeTelecom?sUser=integracao.redetelecom.producao&sSenha=amnet2030rede@!!@202799&sNomeProc=REDE_CLIENTE_CONSULTAR")
	whr.SetRequestHeader("Content-Type", "application/json")
	contrato := "123"
	body = {"COD_CNTR" : %contrato% }

	whr.Send(body)
	Result := whr.ResponseText
	Status := whr.Status

	msgbox, %Result%

Return to “Ajuda e Suporte Geral”

Who is online

Users browsing this forum: No registered users and 11 guests