Windows下运行Boost bcp遇正则表达式括号不匹配错误求助
解决Boost 1.66 bcp工具正则表达式括号不匹配错误
我之前也踩过Boost 1.66版本bcp工具的这个坑,这其实是bcp源码里的正则表达式语法bug导致的,和你尝试的转义方式、路径写法关系不大。
问题根源
报错里的正则片段?+(([(<].*>)?$)?本身就存在语法错误:?+是无效的正则量词组合(标准正则规则里量词不能这样叠加使用),直接导致正则解析器抛出括号不匹配的异常。这个问题在Boost 1.67及以后的版本里已经被官方修复了。
解决办法
你可以任选下面一种方案来解决:
方案1:升级Boost版本
直接下载Boost 1.67或更高版本重新编译bcp工具,新版本已经修复了这个正则表达式的问题,编译完成后执行拷贝命令就不会再触发这个错误。方案2:手动修复bcp源码后重新编译
- 找到Boost源码包中
tools/bcp/src目录下的copy.cpp文件(负责路径匹配逻辑的核心文件) - 定位到报错的那个正则表达式代码,把错误的
?+部分修改为合法的正则语法。比如可以直接去掉前面多余的?+,调整为(([(<].*>)?$)?,或者根据上下文改为+?(非贪婪匹配模式) - 用VS14.1重新编译bcp工具,编译完成后再执行你的拷贝命令
- 找到Boost源码包中
方案3:换一种命令执行方式绕开bug
暂时规避触发有问题的正则匹配逻辑,比如先切换到Boost的根目录,用相对路径执行命令:cd D:/boost/boost_1_66_0_precompiled ./bcp boost/shared_ptr.hpp D:/your_target_directory注意要把
D:/your_target_directory替换成你实际的目标路径,确保路径完整无截断。
内容的提问来源于stack exchange,提问作者legokangpalla
相关产品推荐
相关产品推荐

