You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用CMake string正则替换提取多路径末尾部分并替换全路径

解决方案

错误原因分析

  • 原正则使用了贪婪匹配符.*,会一次性匹配整行中最长的符合规则的字符串,会跨多个路径片段吞噬中间的有效文件名,导致替换结果不符合预期
  • 特意匹配\./的逻辑属于不必要的限制,不管中间路径是否包含相对路径标识./,我们只需要统一移除路径前缀即可,额外限制反而会导致部分路径匹配失败
  • CMake字符串中反斜杠需要双重转义,原写法中的\.在CMake解析阶段会直接变成普通字符.,也会影响匹配效果

正确实现代码

string(REGEX REPLACE "C:/Users/mycode/[^;]*/" "" TEMP "${inputfilecontent}")

逻辑说明

正则模式C:/Users/mycode/[^;]*/的匹配规则:

  • 匹配以C:/Users/mycode/开头的路径前缀
  • [^;]*匹配所有非分号的字符,确保不会跨多个分号分隔的路径片段匹配,避免贪婪匹配问题
  • 匹配到最后一个/为止,刚好覆盖所有需要移除的路径前缀部分
  • 替换为空之后,就只会保留每个路径最后的文件名,同时开头的TESTA:/TESTB:/TESTC:标识不会被匹配,会完整保留

内容的提问来源于stack exchange,提问作者deb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 20:24:03