谷歌RE2没有';无法识别正则表达式中的Unicode转义 我正在开发一个C++应用程序,它使用谷歌Re2库来验证ReGEX配置文件。配置文件的内容被读入一个std::字符串

谷歌RE2没有';无法识别正则表达式中的Unicode转义 我正在开发一个C++应用程序,它使用谷歌Re2库来验证ReGEX配置文件。配置文件的内容被读入一个std::字符串,c++,regex,unicode,re2,C++,Regex,Unicode,Re2,到目前为止,我声明了包含正则表达式的字符串: const string EXPR_FAILED_FILE(R"([^\u0020-\u007E\n]|(\b.*(Mensagem|Antes|Loop|Movimentar|\|).*)|\\[0-9]{3,4})"); 然而,在下面的实现中,我在检测测试字符串(strInput)中的一些无效字符时遇到了一些问题 当我运行代码时,我在stderr中得到以下消息: re2/re2.cc:205: Error parsing '

到目前为止,我声明了包含正则表达式的字符串:

const string EXPR_FAILED_FILE(R"([^\u0020-\u007E\n]|(\b.*(Mensagem|Antes|Loop|Movimentar|\|).*)|\\[0-9]{3,4})");
然而,在下面的实现中,我在检测测试字符串(strInput)中的一些无效字符时遇到了一些问题

当我运行代码时,我在stderr中得到以下消息:

re2/re2.cc:205: Error parsing '[^\u0020-\u007E\n]|(\b.*(Mensagem|Antes|Loop|Movimentar|\|).*)|\\[0-9]{3,4}': invalid escape sequence: \u
re2/re2.cc:890: Invalid RE2: invalid escape sequence: \u
RE2似乎无法识别
\u
序列以查找Unicode字符范围。我在测试该表达式时,在那里正常检测到无效字符

这里可能有什么问题?

每个正则表达式引擎都有,在RE2中,您需要使用
[^\x{0020}-\x{007E}\n]
而不是
[^\u0020-\u007E\n]
。见:


\u
用于匹配大写字符,并标记为不受支持

确定。这个建议的解决方案100%有效。谢谢你的帮助。
re2/re2.cc:205: Error parsing '[^\u0020-\u007E\n]|(\b.*(Mensagem|Antes|Loop|Movimentar|\|).*)|\\[0-9]{3,4}': invalid escape sequence: \u
re2/re2.cc:890: Invalid RE2: invalid escape sequence: \u
Escape sequences:
\a  bell (== \007)
\f  form feed (== \014)
\t  horizontal tab (== \011)
\n  newline (== \012)
\r  carriage return (== \015)
\v  vertical tab character (== \013)
\*  literal «*», for any punctuation character «*»
\123    octal character code (up to three digits)
\x7F    hex character code (exactly two digits)
\x{10FFFF}  hex character code
\C  match a single byte even in UTF-8 mode
\Q...\E literal text «...» even if «...» has punctuation