У меня есть захват Wireshark, и я пытаюсь создатьФильтр отображения [документация Wireshark]который находит XML-документы, содержащие термин @@ V?
(at-at-space-V-questionmark). В документации говорится, что используются Perl Regex:
Оператор match позволяет выполнять поиск текста в строковых полях и последовательностях байтов с использованием регулярного выражения, используя синтаксис регулярных выражений Perl.
И
Примечание: для использования оператора matches необходимо собрать Wireshark с помощью libpcre.
Я не могу выяснить, применимо ли это условие, но в целом я могу использовать оператор matches
, поэтому предполагаю, что эта часть выполнена.
IMHO фильтр xml matches "@@ V\?"
должен работать, но он находит XML, который не соответствует критерию, например XML типа
<?xml version="1.0"?>
<dialog><sysdef name="TERMREC" value="@@ U1160613113912"/></dialog>
Что не так с моим фильтром или с Wireshark?
Использование фильтра без специальных символов (например, xml matches "@@ V0"
) работает так, как и ожидалось. Другие фильтры со специальными символами (например, xml matches "@@ V1\*"
) не работают так же хорошо.
решение1
Оказывается, мне приходится использовать двойной обратный слеш, например, xml matches "@@ V\\?"
и xml matches "@@ V1\\*"
.
Я знал, что это должно быть сделано в коде типа C++ или C#, но не ожидал этого в поле ввода пользователя. Особенно интересно, почему недопустимое выражение с одним обратным слешем не приводит к ошибке, а вместо этого выдает ложные результаты.
я открылОшибка Wireshark 12522.