由于原因,我只在项目中使用RE2进行正则匹配。
我正在尝试使用RE2库来转义特定的字符。
std::string aInput = "~/Test (Folder)/";
RE2::GlobalReplace( &aInput, "(<|>|\\||\\:|\\(|\\)|&|;|\\s)", "\\\\0" );我知道\0正在插入整个匹配组,但是一旦添加了转义符号,我就会收到意想不到的结果:
~/测试\0\0 0Folder\0
而不是
~/Test\ (文件夹)/
如何使用RE2在每个匹配组之前插入\?
PS。RE2::QuoteMeta()对我来说不是一个选项,因为它将转义我不需要转义的字符。
发布于 2019-03-22 09:22:10
正则表达式组以1开头,而不是0。此外,您还使用"\\\\0"作为替换字符串。这是最终正则表达式中的文字"\0"。将"\\\\0"替换为"\\\\\\1"。这将计算为"\\\1",它是一个文字\和第一个匹配组。
您可以设计和测试正则表达式及其使用此有用站点生成的状态机。
https://stackoverflow.com/questions/55296303
复制相似问题