我有以下字符串:
arg1('value1') arg2('value '')2') arg3('value\'3')
提取值的正则表达式如下:
boost::regex re_arg_values("('[^']*(?:''[^']*)*')");
现在这个正则表达式无法提取' value \' 3' 。如何修改正则表达式以考虑\'#39;在括号内也是如此。
FYI。该值可以包含空格,特殊字符以及制表符。代码在CPP中。
提前致谢。
答案 0 :(得分:0)
boost::regex re_arg_values( "\('([^'\\]|''|\\.)*'\)" );
\('
和'\)
匹配边界。
(
,|
和)*
用于匹配任何给定的模式
[^'\\]
匹配普通字符。
''
匹配一对单引号。
\\.
匹配任何转义字符(包括堆叠的反斜杠)。