我的词法分析器中有以下行:
LITERAL_STRING
: '"' .*? '"' ( ('@' LETTER+) | ('^^' HTML_STRING))?
;
在解析字符串时,Lexer只获取字符串的某些部分。
例如:以下是其中一个字符串文字的示例:"Manuel Ben\u00EDtez \"El Cordob\u00E9s\""@es
。我想得到整个字符串,但它只能得到:"Manuel Ben\u00EDtez \"
。
如何清楚地显示整个字符串(在这种情况下:"Manuel Ben\u00EDtez \"El Cordob\u00E9s\""@es
)?
答案 0 :(得分:0)
而不是.*?
,请( ~[\\"] | \\ . )*
:
LITERAL_STRING
: '"' ( ~[\\"] | \\ . )* '"' ( ('@' LETTER+) | ('^^' HTML_STRING))?
;
说明:
~[\\"] # any char other than a backslash and double quote
| # OR
\\ . # a backslash followed by any char