У меня есть захват Wireshark, и я пытаюсь создать фильтр отображения [документация Wireshark], который находит XML-документы, содержащие термин @@ V? (По-крайней-пространстве-V-Questionmark). В документации говорится, что используются Perl Regex:

Оператор совпадений позволяет искать текст в строковых полях и байтовых последовательностях с помощью регулярного выражения с использованием синтаксиса регулярного выражения Perl.

А также

Примечание: Wireshark необходимо собрать с помощью libpcre, чтобы можно было использовать оператор совпадений.

Я не могу выяснить, применимо ли это условие, но в целом я могу использовать оператор matches , поэтому я предполагаю, что часть выполнена.

ИМХО фильтр xml matches "@@ V\?" должен работать, но он находит XML, который не соответствует критерию, например, XML

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

Что не так с моим фильтром или с Wireshark?

Использование фильтра без специальных символов (например, xml matches "@@ V0") работает как ожидалось. Другие фильтры со специальными символами (например, xml matches "@@ V1\*") также не работают.

1 ответ1

0

Оказывается, я должен использовать двойную обратную косую черту, например, xml matches "@@ V\\?" и xml matches "@@ V1\\*" .

Я знал, что это должно быть сделано в коде, подобном C++ или C #, но не ожидал этого в поле ввода пользователя. Особенно мне интересно, почему недопустимое выражение с одним обратным слешем не приводит к ошибке, а дает ложные результаты.

Я открыл Wireshark Bug 12522.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .