如何在正则表达式中禁用元字符?

时间:2016-03-02 01:07:37

标签: regex 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正则表达式的对应语法是什么?感谢。

1 个答案:

答案 0 :(得分:1)

不,C ++正则表达式不支持\ Q和\ E转义序列。您需要手动转义所有在正则表达式中具有特殊含义的特殊字符。在您的示例中,您需要转义(,)和。

你可以在C ++ 11中重写上面的正则表达式

std::regex re(R"(\d{3}\(a\.o\.e\)\.u\.i\.y\w+)");