转义tr1 :: regex的正则表达式特殊字符

时间:2013-03-20 12:18:14

标签: c++ regex tr1

我需要在我的正则表达式中嵌入用户输入,因此需要对任何正则表达式特殊字符进行转义,而且事先我不知道该字符串是什么。

这就像是

string pattern = "\\d+ " + myEscapeFunction(userData);

我需要逃脱哪些特殊角色?或者是否有与Qt的QRegExp::escape相同的功能?

1 个答案:

答案 0 :(得分:3)

您必须转义的字符列表取决于您正在使用的各种正则表达式语法。如果您使用的是默认ECMAScript,则QRegExp::escape文档中的列表似乎是一个很好的起点。它说:

  

特殊字符是$,(,),*,+,。,?,[,,],^,{,|和}。

由于某种原因,该列表遗漏了\

但它稍微复杂一点,因为在方括号内,除\]之外的所有字符都不特殊,\]必须保持未转义状态。

此外,?之后的(并非特殊。例如,在(?=x)中,?应该进行转义。

我认为这就是它,但我还没有给它足够的时间来确定。