regex - CMake:如何在 Regexp 替换中获取反斜杠文字?

标签 regex string cmake backslash

我正在尝试用反斜杠替换正斜杠。
为此,我有以下代码行:

STRING(REGEX REPLACE "/" "\\" SourceGroup ${SourceGroupPath} )

SourceGroupPath = A/文件/路径。
SourceGroup 是将结果设置为的变量。

我遇到的问题是代码的“\\”部分。
我尝试了几种方法来使用像“\\”这样的反斜杠文字
并使用 unicode 但似乎没有任何效果。

我在 CMake 中得到的错误是:

CMake Error at CMakeLists.txt:41 (STRING): string sub-command REGEX, mode REPLACE: replace-expression ends in a backslash.



有人可以帮我吗?

谢谢,

沃特

最佳答案

原因是在 CMake 字符串文字中,反斜杠是转义字符(就像在 C、Java 或 JavaScript 中一样),而在正则表达式中,反斜杠也是转义字符。

因此,要将正则表达式表示为字符串文字,您需要双重转义。 (这就是为什么许多“高级”语言都有正则表达式文字符号,顺便说一句。)

字符串文字 "\\"表示内存中的字符串 "\"这是一个无效的正则表达式,因此“以反斜杠结尾”错误。

字符串文字 "\\\\"代表"\\"在内存中这是一个有效的正则表达式(代表一个反斜杠)。

关于regex - CMake:如何在 Regexp 替换中获取反斜杠文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4490793/

相关文章:

java - 当我们写入时创建了多少个对象

主机上的链接阶段 CMake 交叉编译失败(目标是 Raspberry Pi)

html - 删除 HTML 标记中的所有属性,但使用正则表达式指定的属性除外

regex - 使用终端 man 命令阅读手册页中的部分

Python3 字符串编码混淆输出

c - 如何使用 fscanf 跳过文件中的内容?

node.js - 如何制作一个遍历所有 .m 和 .h 文件并替换这行代码的脚本

r - 使用正则表达式和 POSIX 字符类验证 R 中的密码

c++ - CMake 不再查找静态 Boost 库

android - 无法为适用于 Android 平台的 AWS C++ SDK 构建库