我有一個小問題(我之前用過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