如何在 CMake 中使用正则表达式的 {n} 语法

cro*_*mod 5 regex cmake repeat

我有这个字符串“2017-03-05-02-10-10_78205”,我想将它与此模式匹配,[0-9]{4}(-[0-9]{2}){5}_[0-9]+但它在 CMake 上不起作用。在 CMake 中查看此示例:

set(stuff "2017-03-05-02-10-10_78205")
if( "${stuff}" MATCHES "[0-9]{4}(-[0-9]{2}){5}_[0-9]+")
  message("Hello")
endif()
Run Code Online (Sandbox Code Playgroud)

CMake 似乎不支持语法{n}。显然,我用那个模式解决了我的问题[0-9-]+_[0-9]+

不过,我想知道我的语法是否有问题{n}。CMake 支持吗?如果没有,如何使用 CMake 定义特定的重复次数?

我使用的是旧的 CMake 版本 (2.8.11.2)。

cro*_*mod 2

我们可以通过使用 shell 命令和 来解决这个问题execute_process。例如,在linuxechogrep

set(stuff "2017-03-05-02-10-10_78205")
set(regexp "[0-9]{4}(-[0-9]{2}){5}_[0-9]+")
execute_process( COMMAND echo "${stuff}"
                 COMMAND grep -E -o "${regexp}"
                 OUTPUT_VARIABLE thing )
if(thing)
  message("Hello")
endif()
Run Code Online (Sandbox Code Playgroud)

但我们失去了 CMake 的跨平台方面。