我有一个小问题(我之前用过Google): 有没有办法,如何匹配除引号以外的所有特殊Unicode字符?识别特殊字符
我有这样的代码:
STRING: '"' (NUMBER|LETTER|' '|'!'|'?'|':'|'.'|'/'|'*')* '"';
fragment LETTER: ('a'..'z'|'A'..'Z');
fragment DIGIT: ('0'..'9');
有没有更有效的方法?
感谢您的反馈!
我有一个小问题(我之前用过Google): 有没有办法,如何匹配除引号以外的所有特殊Unicode字符?识别特殊字符
我有这样的代码:
STRING: '"' (NUMBER|LETTER|' '|'!'|'?'|':'|'.'|'/'|'*')* '"';
fragment LETTER: ('a'..'z'|'A'..'Z');
fragment DIGIT: ('0'..'9');
有没有更有效的方法?
感谢您的反馈!
~["]
或旧的v3风格~'"'
匹配除引号之外的任何字符。
如果你也想排除换行,做这样的事情:
STRING : '"' ~["\r\n]* '"';
~x
匹配任何单个字符不是由
x
描述的集。设置x
可以是单个字符文字,范围或~(’x’|’y’|’z’)
或~[xyz]
的子集。下面是一个使用~
使用~[\r\n]*
匹配字符以外的任何字符的规则:COMMENT : '#' ~[\r\n]* '\r'? '\n' -> skip ;
当我输入'print'Hello world!''时,表示'1'行1:6标记识别错误'''''' 行1:18标记识别错误:'!' 行1:19标记识别错误:''\ n'' – DrunkCoder 2014-09-28 08:22:47
@DrunkCoder,你没有使用ANTLR3,对不对?如果你使用v4,我想其他一些规则会导致失败:你能在这种情况下发布你的整个语法吗?另请参阅官方文档的链接。 – 2014-09-29 20:19:03
是什么让一个字符“特殊”? – hobbs 2014-09-28 06:02:59