首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用RE2::GlobalReplace转义字符串

使用RE2::GlobalReplace转义字符串
EN

Stack Overflow用户
提问于 2019-03-22 09:15:35
回答 1查看 675关注 0票数 1

由于原因,我只在项目中使用RE2进行正则匹配。

我正在尝试使用RE2库来转义特定的字符。

代码语言:javascript
复制
std::string aInput = "~/Test (Folder)/";
RE2::GlobalReplace( &aInput, "(<|>|\\||\\:|\\(|\\)|&|;|\\s)", "\\\\0" );

我知道\0正在插入整个匹配组,但是一旦添加了转义符号,我就会收到意想不到的结果:

~/测试\0\0 0Folder\0

而不是

~/Test\ (文件夹)/

如何使用RE2在每个匹配组之前插入\?

PS。RE2::QuoteMeta()对我来说不是一个选项,因为它将转义我不需要转义的字符。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-22 09:22:10

正则表达式组以1开头,而不是0。此外,您还使用"\\\\0"作为替换字符串。这是最终正则表达式中的文字"\0"。将"\\\\0"替换为"\\\\\\1"。这将计算为"\\\1",它是一个文字\和第一个匹配组。

您可以设计和测试正则表达式及其使用此有用站点生成的状态机。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55296303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档