2013-07-27 16 views
5

ANTLR v4では、VBAのように二重引用符でエスケープした二重引用符でこの種の文字列を解析するにはどうすればよいですか?テキストのANTLRv4:二重引用符をエスケープした文字列の二重引用符を読み取るにはどうすればよいですか?

"some string with ""john doe"" in it" 

目標は、文字列を識別するために、次のようになります。some string with "john doe" in it

そして、それは、単一の二重引用符で二重の二重引用符をオンにすることを書き換えることが可能ですか? "" -> "?このよう

答えて

9

~[\r\n"] # any char other than '\r', '\n' and double quotes 
|   # OR 
'""'  # two successive double quotes 

をそして、それはそれは、単一の二重引用符で二重の二重引用符をオンに書き換えることが可能である:~[\r\n"] | '""'は意味

STRING 
: '"' (~[\r\n"] | '""')* '"' 
; 

カスタムコードを埋め込まないでください。 Javaの場合は次のようになります。

+0

は魅力的です。二重引用符を一重引用符で囲むように書き直すことは可能ですか? – JayDee

+0

@JayDee私の修正された答えを参照してください –

+1

ANTLR 4を使用している私にとっては、次の規則は二重引用符とシングルクォーテッド文字列の両方で機能しました: STRING: '"'(〜[\ r \ n"] | '""')* '"' | '\' '(〜[\ r \ n \'] | '\' \ '')* '\' '; –

関連する問題