我需要在我的正则表达式中嵌入用户输入,因此需要对任何正则表达式特殊字符进行转义,而且事先我不知道该字符串是什么。
这就像是
string pattern = "\\d+ " + myEscapeFunction(userData);
我需要逃脱哪些特殊角色?或者是否有与Qt的QRegExp::escape相同的功能?
答案 0 :(得分:3)
您必须转义的字符列表取决于您正在使用的各种正则表达式语法。如果您使用的是默认ECMAScript
,则QRegExp::escape
文档中的列表似乎是一个很好的起点。它说:
特殊字符是$,(,),*,+,。,?,[,,],^,{,|和}。
由于某种原因,该列表遗漏了\
。
但它稍微复杂一点,因为在方括号内,除\
和]
之外的所有字符都不特殊,\]
必须保持未转义状态。
此外,?
之后的(
并非特殊。例如,在(?=x)
中,?
应该不进行转义。
我认为这就是它,但我还没有给它足够的时间来确定。