正規表示式對於特殊字元不能如預期運作

正規表示式對於特殊字元不能如預期運作

我有一個 Wireshark 捕獲,我正在嘗試創建一個顯示過濾器 [Wireshark 文件]尋找包含術語@@ V?(at-at-space-V-questionmark) 的 XML 文件。文件說使用 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

事實證明我必須使用雙反斜杠,例如xml matches "@@ V\\?"and xml matches "@@ V1\\*"

我知道這必須在 C++ 或 C# 等程式碼中完成,但沒想到會在使用者輸入欄位中完成。特別是,我想知道為什麼帶有單一反斜線的無效表達式不會導致錯誤,而是提供錯誤的結果。

我已經打開了Wireshark 錯誤 12522

相關內容