5
在ANTLR v4中,我們如何使用雙引號解析這種字符串,如VBA中的雙引號?ANTLRv4:如何閱讀雙引號轉義字符串中的雙引號?
文本:
"some string with ""john doe"" in it"
的目標將是確定的字符串:some string with "john doe" in it
,並有可能重寫它把雙雙引號單雙引號? "" -> "
?
在ANTLR v4中,我們如何使用雙引號解析這種字符串,如VBA中的雙引號?ANTLRv4:如何閱讀雙引號轉義字符串中的雙引號?
文本:
"some string with ""john doe"" in it"
的目標將是確定的字符串:some string with "john doe" in it
,並有可能重寫它把雙雙引號單雙引號? "" -> "
?
像這樣:
STRING
: '"' (~[\r\n"] | '""')* '"'
;
其中~[\r\n"] | '""'
表示:
~[\r\n"] # any char other than '\r', '\n' and double quotes
| # OR
'""' # two successive double quotes
,並有可能重寫它把雙雙引號單雙引號?
不是沒有嵌入自定義代碼。在Java中可能看起來像:
STRING
: '"' (~[\r\n"] | '""')* '"'
{
String s = getText();
s = s.substring(1, s.length() - 1); // strip the leading and trailing quotes
s = s.replace("\"\"", "\""); // replace all double quotes with single quotes
setText(s);
}
;
工程就像一個魅力。側面的問題,是否有可能重寫它轉雙雙引號單雙引號? 「」 - >「?謝謝! – JayDee
@JayDee看到我的修改後的答案。 –
對於使用ANTLR 4的人來說,以下規則同時用於雙引號和單引號字符串: STRING:'''(〜[\ r \ n」] |'「」')*'「'| '''(〜[\ r \ n''|'\'\'')*'\''; –