Ich habe durch andere Fragen regex
gesucht, aber konnte keine Antwort finden. Ich arbeite an einer Grammatik in ANTLR4 und es gibt einen regulären Ausdruck, der mir entgangen ist.erlauben nur bestimmte Escape-Zeichen im regulären Ausdruck
Ich versuche, alle Zeichen übereinstimmen, außer für durch irgendetwas anderes als [btnrf"\]
gefolgt \
.
Ich habe versucht, (~([\\][.]) | [\\][btnrf"\])
, aber die ~
negiert nur ein einzelnes Zeichen so weit ich kann sagen. Ich erhalte den Fehler:
error AC0050: extraneous input '[.]' expecting RPAREN while looking for lexer rule element
Es scheint, wie es nicht allzu schwer sein sollte \*
ausschließen, aber der kleine Liste akzeptabler Escape-Zeichen ermöglichen. Ich war auf http://www.regex101.com und ich habe keine Probleme mit den zulässigen Zeichen, aber aus irgendeinem Grund kann ich einfach nicht herausfinden, wie neben den oben genannten Escape-Zeichen zu verbieten, während auch alle anderen Zeichen erlaubt.
Manuelles Angeben jedes gültigen Eingabezeichens scheint übertrieben zu sein, aber darauf kommt es an. Etwas wie:
[[email protected]#$%^&*()\-+=/.,<>;':\b\t\n\r\f\"\\]*
Das ist nicht 100% gültig sein kann, aber die Idee ist die Auflistung nur alle gültigen möglichen Zeichen, die standardmäßig alle ungültigen Escape-Zeichen ausschließen würde. Es scheint, als sollte es einen einfacheren Weg geben. Alle Tipps oder Links zu nützlichen Informationen würden sehr geschätzt.
Die eigentliche Regel, die ich bisher habe, was alles in doppelten Anführungszeichen als gültige Zeichenfolge eingeschlossen erlaubt:
STRING : '"' (~[\"] | '\\"')* '"';
Was ich nicht verstehe, ist, welche Charaktere versuchst du zu negieren? –
Ich versuche, alle regulären Zeichen zuzulassen und verbiete alle Zeichen außer den genannten. Also sind '\ t' oder' \ "' gültig, aber '\ u' ist nicht. –