cmake - 编译正则表达式时出错

时间:2016-02-02 08:08:46

标签: regex cmake

我有一个字符串:1.0.2-1我需要得到一个子字符串:1.0.2以下正则表达式在c ++中工作正常:

std::regex myReg(".+?(?=-)");

当我尝试在cmake中使用该正则表达式时:

STRING(REGEX MATCH ".+?(?=-)" OUTPUT $VER)

我收到错误:

[INFO] RegularExpression::compile(): Nested *?+.
[INFO] RegularExpression::compile(): Error in compile.

如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

CMake regex syntax不支持延迟量词,因此错误消息。

由于您需要使用-以外的字符进行首次匹配,因此您可以使用

[^-]+

或(告诉引擎只查找字符串开头的匹配项):

^[^-]+