Expressão regular não funciona como esperado para caracteres especiais

0

Eu tenho uma captura do Wireshark e estou tentando criar um filtro de exibição [documentação do Wireshark] que encontra documentos XML que contêm o termo @@ V? (at-at-space-V-questionmark). A documentação diz que o Perl Regex é usado:

The matches operator makes it possible to search for text in string fields and byte sequences using a regular expression, using Perl regular expression syntax.

e

Note: Wireshark needs to be built with libpcre in order to be able to use the matches operator.

Não consigo descobrir se essa condição se aplica, mas, em geral, posso usar o operador matches , então presumo que a parte seja atendida.

IMHO o filtro xml matches "@@ V\?" deve funcionar, mas ele encontra XML que não se enquadra no critério, por exemplo um XML como

<?xml version="1.0"?>
<dialog><sysdef name="TERMREC" value="@@ U1160613113912"/></dialog>

O que há de errado com meu filtro ou com o Wireshark?

Usar um filtro sem caracteres especiais (por exemplo, xml matches "@@ V0" ) funciona conforme o esperado. Outros filtros com caracteres especiais (por exemplo, xml matches "@@ V1\*" ) não funcionam tão bem.

    
por Thomas Weller 14.06.2016 / 09:39

1 resposta

0

Acontece que eu tenho que usar uma barra invertida dupla, por exemplo xml matches "@@ V\?" e xml matches "@@ V1\*" .

Eu sabia que isso tem que ser feito em código como C ++ ou C #, mas não esperava isso em um campo de entrada do usuário. Especialmente, pergunto-me por que uma expressão inválida com uma única barra invertida não resulta em erro, mas fornece resultados falsos.

Eu abri o Wireshark Bug 12522 .

    
por 14.06.2016 / 10:02