我有一个CMake字符串变量:
set(var "String0 String_1 String_2")
我需要从此变量("String0"
)中选择第一个空格之前的内容,然后使用此内容创建一个新变量。
我使用CMake的REGEX MATCH
方法执行此操作,并使用了此正则表达式:'\S\w*'
。我已经在在线正则表达式解释器上测试了该正则表达式,并且可以正常工作。
我已经在CMake中编写了此代码(当然设置了变量之后):
string(REGEX MATCH "\S\w*" NEW_VAR "${VAR}")
执行此操作时,脚本会抱怨无效跳过字符(S
和w
)。因此,接下来,我尝试转义两个斜杠:
string(REGEX MATCH "\\S\\w*" NEW_VAR "${VAR}")
现在NEW_VAR
等于'S'
,而不是我期望的"String0"
。
由于我对正则表达式和CMake的了解很少,请帮助我纠正这一点。
答案 0 :(得分:1)
您还可以搜索第一个出现的空格字符的位置,并从该字符串的开头选择substring到该位置:
set(var "String_0 String_1 String_2")
string(FIND ${var} " " wsloc)
message(STATUS "position of first whitespace character: ${wsloc}")
string(SUBSTRING ${var} 0 ${wsloc} newvar)
message(STATUS "selected substring: \"${newvar}\"")
答案 1 :(得分:0)
我已经使用了它并且有效(不确定在所有情况下它的性能如何):
。[((A-z)|(a-z)|(0-9)] *