Reguläre Ausdrücke funktionieren bei Sonderzeichen nicht wie erwartet

Reguläre Ausdrücke funktionieren bei Sonderzeichen nicht wie erwartet

Ich habe eine Wireshark-Aufnahme und versuche eineAnzeigefilter [Wireshark Dokumentation]das XML-Dokumente findet, die den Begriff @@ V?(at-at-space-V-questionmark) enthalten. In der Dokumentation steht, dass Perl Regex verwendet werden:

Der Matches-Operator ermöglicht die Suche nach Text in Zeichenfolgenfeldern und Bytefolgen mittels regulärer Ausdrücke unter Verwendung der Perl-Syntax für reguläre Ausdrücke.

Und

Hinweis: Wireshark muss mit libpcre erstellt werden, um den Matches-Operator verwenden zu können.

Ich kann nicht herausfinden, ob diese Bedingung zutrifft, aber im Allgemeinen kann ich den matchesOperator verwenden, daher würde ich davon ausgehen, dass dieser Teil erfüllt ist.

Meiner Meinung nach sollte der Filter xml matches "@@ V\?"funktionieren, aber er findet XML, das nicht dem Kriterium entspricht, z. B. ein XML wie

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

Was ist mit meinem Filter oder mit Wireshark los?

Die Verwendung eines Filters ohne Sonderzeichen (z. B. xml matches "@@ V0") funktioniert wie erwartet. Andere Filter mit Sonderzeichen (z. B. xml matches "@@ V1\*") funktionieren nicht so gut.

Antwort1

Es stellt sich heraus, dass ich einen doppelten Backslash verwenden muss, z. B. xml matches "@@ V\\?"und xml matches "@@ V1\\*".

Ich wusste, dass dies in Code wie C++ oder C# erfolgen muss, habe dies aber nicht in einem Benutzereingabefeld erwartet. Insbesondere frage ich mich, warum ein ungültiger Ausdruck mit einem einzelnen Backslash nicht zu einem Fehler führt, sondern stattdessen falsche Ergebnisse liefert.

ich habe geöffnetWireshark-Fehler 12522.

verwandte Informationen