我需要在我的正则表达式中嵌入用户输入,因此需要对任何正则表达式特殊字符进行转义,而且我事先不知道字符串是什么。
会是这样的
string pattern = "\\d+ " + myEscapeFunction(userData);
我需要转义哪些特殊字符?或者是否有与 Qt 的QRegExp::escape等效的功能?
我需要在我的正则表达式中嵌入用户输入,因此需要对任何正则表达式特殊字符进行转义,而且我事先不知道字符串是什么。
会是这样的
string pattern = "\\d+ " + myEscapeFunction(userData);
我需要转义哪些特殊字符?或者是否有与 Qt 的QRegExp::escape等效的功能?
您必须转义的字符列表取决于您使用的各种正则表达式语法中的哪一种。如果您使用的是 default ECMAScript
,那么文档中的列表似乎QRegExp::escape
是一个不错的起点。它说:
特殊字符为 $、(,)、*、+、.、?、[、,]、^、{、| 和 }。
\
由于某种原因,该列表被遗漏了。
但它比这稍微复杂一些,因为在方括号内,除了\
and之外没有任何字符]
是特殊的,并且\]
必须保持未转义。
此外,?
紧跟在 a 之后的 a(
并不特殊。例如,在(?=x)
不应该?
转义。
我想差不多就是这样,但我没有花足够的时间来确定。