특수 문자에 대해 정규식이 예상대로 작동하지 않습니다.

특수 문자에 대해 정규식이 예상대로 작동하지 않습니다.

Wireshark 캡처가 있고디스플레이 필터 [Wireshark 문서]@@ V?(at-at-space-V-questionmark)라는 용어가 포함된 XML 문서를 찾습니다 . 문서에는 Perl Regex가 사용된다고 나와 있습니다.

일치 연산자를 사용하면 Perl 정규식 구문을 사용하여 정규식을 사용하여 문자열 필드 및 바이트 시퀀스에서 텍스트를 검색할 수 있습니다.

그리고

참고: match 연산자를 사용하려면 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.

관련 정보