CMake中的版本正则表达式
问题描述:
我想验证用户指定的版本字符串 - 以确保它由三个由句点分隔的数字(e.g. 1.20.300
)组成。
但我不知道如何写这样的正则表达式,下面的代码也只是一种尝试:CMake中的版本正则表达式
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
,但不应该!
只有三个以时间分隔的数字是可能的。
答
点在正则表达式特殊,所以你应该逃避他们:
"^([0-9]+)\\.([0-9]+)\\.([0-9]+)$"
为什么双反斜线?看这里:https://stackoverflow.com/a/4490920/4323
尝试'“^([0-9] +)[。]([0-9] +)[。]([0-9] +)$”' –
@Biffen它也匹配例如,'1.2.3.4'字符串。但是不应该! – eraxillan