【发布时间】:2016-06-14 16:20:36
【问题描述】:
在 Perl 中,我们可以做到这一点
$str =~ /\d{3}\Q(a.o.e).u.i.y\E\w+/;
在\Q 和\E 之间,(a.o.e).u.i.y 是一个文字字符串,其中所有元字符(如括号和点)都被视为文字字符。 C++11 的正则表达式或 Boost 的正则表达式的对应语法是什么?谢谢。
【问题讨论】:
在 Perl 中,我们可以做到这一点
$str =~ /\d{3}\Q(a.o.e).u.i.y\E\w+/;
在\Q 和\E 之间,(a.o.e).u.i.y 是一个文字字符串,其中所有元字符(如括号和点)都被视为文字字符。 C++11 的正则表达式或 Boost 的正则表达式的对应语法是什么?谢谢。
【问题讨论】:
不,C++ 正则表达式不支持 \Q 和 \E 转义序列。您需要手动转义所有在正则表达式中具有特殊含义的特殊字符。在您的示例中,您需要转义 (, ) 和 .
您可以在 C++ 11 中将上述正则表达式重写为
std::regex re(R"(\d{3}\(a\.o\.e\)\.u\.i\.y\w+)");
【讨论】: