CMake中的版本正则表达式

时间:2015-11-02 12:05:50

标签: regex cmake

我想验证用户指定的版本字符串 - 以确保它包含三个以句点分隔的数字(e.g. 1.20.300)。
但我不确定如何编写这样的正则表达式,下面的代码只是一个尝试:

if( PROJECT_VERSION MATCHES "([0-9]+).([0-9]+).([0-9+])" )
    message( "NOTE: Valid version string" )
else()
    message( FATAL_ERROR "Invalid version string" )
endif()

那么,如何正确编写所需的正则表达式?
感谢。

UPD
我的正则表达式也匹配1.2.3.4,但不应该!
只有三个以句号分隔的数字。

1 个答案:

答案 0 :(得分:5)

正则表达式中的点是特殊的,所以你应该逃避它们:

"^([0-9]+)\\.([0-9]+)\\.([0-9]+)$"

为什么要双反斜杠?见这里:https://stackoverflow.com/a/4490920/4323