Adenes Postado Março 31, 2015 Denunciar Share Postado Março 31, 2015 Boa Noite, Preciso capturar dados de uma variável usando uma regular expression. Os dados estão na forma (por exemplo Ip=8.8.8.8&probe=ip/tcp{dst=53}). Para isso estou usando: char *data; data = getenv("QUERY_STRING"); char ipt[40]; char probe[40]; sscanf(data,"ip=%[0-9a-zA-Z-.]&probe=%[0-9a-zA-Z-.{}/=]",ipt,probe); O segundo dado tem a barra sempre, porém o compilador não aceita essa regular expression, mais especificamente a / são consigo capturar o que há depois do probe= como fazer? Já tentei usar sscanf(data,"ip=%[0-9a-zA-Z-.]&probe=%[...]",ipt,probe); sem sucesso também. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 LazaroBinda Postado Abril 1, 2015 Denunciar Share Postado Abril 1, 2015 Se eu entendi, você está tentando capturar 8.8.8.8 e ip/tcp{dst=53}. Se for, tenta isso: sscanf(data,"%*[IiPp=]%[0-9.]%*[&pPrRoObBeE=]%[a-zA-Z0-9/.}{=]", ipt, probe); Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Adenes Postado Abril 1, 2015 Autor Denunciar Share Postado Abril 1, 2015 Sim essa é minha intenção. Porém esses campos são variáveis. O IP está capturando corretamente, mas a parte da probe não captura nenhum dos caracteres especiais, somente letras e o . os {}/= não são capturados nem do jeito que eu postei nem com sua dica. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 LazaroBinda Postado Abril 1, 2015 Denunciar Share Postado Abril 1, 2015 #include <stdio.h> #include <stdlib.h> int main(){ char *data = "Ip=8.8.8.8&probe=ip/tcp{dst=53}"; //data = getenv("QUERY_STRING"); char ipt[40]; char probe[40]; sscanf(data,"%*[IiPp=]%[0-9.]%*[&pPrRoObBeE=]%[a-zA-Z0-9/.}{=]", ipt, probe); printf("ip: %s\nprobe: %s\n", ipt, probe); fflush(stdout); return 0; } Saída: ipt: 8.8.8.8 probe: ip/tcp{dst=53} Tem certeza que são esses dados que estão na variável QUERY_STRING? Manda imprimir o valor de "data" antes de usar o sscanf. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Adenes
Boa Noite,
Preciso capturar dados de uma variável usando uma regular expression. Os dados estão na forma (por exemplo Ip=8.8.8.8&probe=ip/tcp{dst=53}).
Para isso estou usando:
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.