我一直在尋找其他regex
的問題,但一直未能找到答案。我正在ANTLR4的一個語法中工作,並且有一個正常的表達式一直在逃避我。只允許在正則表達式中使用特定的轉義字符
我試圖匹配任何字符,除了對於\
其次是[btnrf"\]
以外的任何其他字符。
我試過(~([\\][.]) | [\\][btnrf"\])
,但~
只能否定單個字符,據我所知。我得到的錯誤:
error AC0050: extraneous input '[.]' expecting RPAREN while looking for lexer rule element
現在看來似乎不應該太難排除\*
但允許可接受的轉義字符的小單子。我一直在http://www.regex101.com,我沒有任何匹配允許的字符的麻煩,但由於某種原因,我只是不知道如何禁止除上述提到的轉義字符,同時也允許所有其他字符。
手動指定每個有效的輸入字符似乎是矯枉過正,但這可能是它所涉及的。喜歡的東西:
[[email protected]#$%^&*()\-+=/.,<>;':\b\t\n\r\f\"\\]*
這可能不是100%有效的,但這個想法是剛剛上市的所有有效可能的字符,默認情況下會排除任何無效的轉義字符。似乎應該有一個更簡單的方法。任何提示或鏈接到有用的信息將不勝感激。
實際的規則,我到目前爲止,它允許任何包含在雙引號作爲一個有效的字符串:
STRING : '"' (~[\"] | '\\"')* '"';
我不明白是,你試圖否定哪些角色? –
我試圖讓所有常規字符,並禁止除提到的所有轉義字符。所以'\ t'或'\「'是有效的,但'\ u'不是。 –