Warum wird Regex nicht erhöht?. {2} 'Übereinstimmung' ?? '

8

Ich versuche einige Chunks zu finden, wenn interessante Daten in einem Datenstrom sind.

Es sollte ein führendes < , dann vier alphanumerische Zeichen, zwei Zeichen der Prüfsumme (oder ?? , wenn kein Shecksum angegeben wurde) und ein abschließendes > geben.

Wenn die letzten zwei Zeichen alphanumerisch sind, funktioniert der folgende Code wie erwartet. Wenn sie ?? sind, obwohl es fehlschlägt.

%Vor%

Ich habe nichts in der Dokumentation was darauf hindeutet, dass dies der Fall sein sollte (alle außer NULL und Newline sollten übereinstimmen AIUI).

Was habe ich verpasst?

    
Jon Cage 08.11.2016, 09:52
quelle

1 Antwort

10

Da ??> ein Trigraph ist, wird es in } , Ihren Code, konvertiert entspricht:

%Vor%

Sie können dazu wechseln:

%Vor%

Demo (Hinweis: Ich benutze std::regex , was mehr oder weniger das gleiche ist)

ANMERKUNG: trigraph ist in C ++ 11 veraltet und wird (wahrscheinlich) aus C ++ 17 entfernt

    
Danh 08.11.2016, 10:00
quelle

Tags und Links