识别特殊字符

时间:2014-09-28 06:01:03

标签: regex unicode special-characters antlr antlr4

我有一个小问题(我之前使用过Google): 有没有办法,如何匹配除引号之外的所有特殊unicode字符?

我有这段代码:

STRING:     '"' (NUMBER|LETTER|' '|'!'|'?'|':'|'.'|'/'|'*')* '"';

fragment LETTER: ('a'..'z'|'A'..'Z');
fragment DIGIT:  ('0'..'9');

有更有效的方法吗?

感谢您的反馈!

1 个答案:

答案 0 :(得分:0)

~["]或旧的v3样式~'"'匹配除引号之外的任何字符。

如果您还想排除换行符,请执行以下操作:

STRING : '"' ~["\r\n]* '"';

来自the official docs

  

~x

     

匹配x描述的集合中没有的任何单个字符。集x可以是单个字符文字,范围或子集,如~(’x’|’y’|’z’)~[xyz]。以下规则使用~来匹配使用~[\r\n]*的字符以外的任何字符:

COMMENT : '#' ~[\r\n]* '\r'? '\n' -> skip ;