我是新来的鼓舞人心并使用microSQL-Parser的人。
无法解析带引号的字符串,例如:'It's driving me crazy'
在具有以下语法定义的示例中:

string_literal = lexeme_d[ch_p( '\'' ) >> +(anychar_p - ch_p( '\'' ))
                       >> ch_p( '\'' )] ;


我已经尝试了很多,但是找不到正确的方法。有人吗
知道怎么做对吗?

最佳答案

上面的代码对应于正则表达式:'[^']+'
(它与空字符串''不匹配,但这是另一个问题)。

通过将引号加倍将引号嵌入到SQL字符串中,因此您实际上要向其提供字符串:'It''s driving me crazy',并且可以使用正则表达式:'(''|[^'])*'

对应于以下代码:

string_literal = lexeme_d[ch_p('\'') >>
    *(ch_p('\'') >> ch_p('\'') || +(anychar_p - ch_p('\''))) >>
    ch_p('\'')];

10-06 04:13