我有以下规则:
value : STRING;
STRING : '"' ('\"' | ~'"')* '"';
这是允许在字符串中出现"
的正确且明智的方法吗?它被转义为"
。
字符串解析如下:
final ValueContext c = ...;
final String s = c.STRING().getText();
s.substring(1, s.length() - 1).replaceAll("\\"", """);
是的,这就是许多其他语言允许转义引号的原因。请注意,~'"'
还允许在字符串文字中包含换行符。如果您不想要,请将其替换为~["rn]
。