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

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

Eu tenho uma captura do Wireshark e estou tentando criar umfiltro 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 Perl Regex é usado:

O operador matches torna possível pesquisar texto em campos de string e sequências de bytes usando uma expressão regular, usando a sintaxe de expressão regular Perl.

E

Nota: O Wireshark precisa ser compilado com libpcre para poder usar o operador matches.

Não consigo descobrir se esta condição se aplica, mas em geral posso usar o matchesoperador, então presumo que essa parte foi cumprida.

IMHO, o filtro xml matches "@@ V\?"deve funcionar, mas 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.

Responder1

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

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

Eu abriBug Wireshark 12522.

informação relacionada