修改正则表达式以包含反斜杠和单引号(以便反斜杠表现为转义字符)

时间:2017-11-16 08:42:22

标签: c++ regex escaping

我有以下字符串:

arg1('value1') arg2('value '')2') arg3('value\'3')

提取值的正则表达式如下:

boost::regex re_arg_values("('[^']*(?:''[^']*)*')");

现在这个正则表达式无法提取' value \' 3' 。如何修改正则表达式以考虑\'#39;在括号内也是如此。

FYI。该值可以包含空格,特殊字符以及制表符。代码在CPP中。

提前致谢。

1 个答案:

答案 0 :(得分:0)

boost::regex re_arg_values( "\('([^'\\]|''|\\.)*'\)" );

\(''\)匹配边界。

(|)*用于匹配任何给定的模式

[^'\\]匹配普通字符。

''匹配一对单引号。

\\.匹配任何转义字符(包括堆叠的反斜杠)。