我有以下规则:
value : STRING;
STRING : '"' ('\\"' | ~'"')* '"';
这是一种允许"
出现在字符串中的正确而明智的方法吗?它被转义为\"
。
字符串解析如下:
final ValueContext c = ...;
final String s = c.STRING().getText();
s.substring(1, s.length() - 1).replaceAll("\\\\\"", "\"");
答案 0 :(得分:3)
是的,这就是有多少其他语言允许转义报价。请注意,~'"'
还允许换行符包含在字符串文字中。如果您不想这样,请将其替换为~["\r\n]
。