Regex CMake正则表达式匹配
我有一个CMake字符串变量:Regex CMake正则表达式匹配,regex,cmake,Regex,Cmake,我有一个CMake字符串变量: set(var "String0 String_1 String_2") 我需要从这个变量(“String0”)中选择第一个空格之前的内容,并用这个内容创建一个新变量 我使用CMake的REGEX-MATCH方法来实现这一点,并使用这个REGEX:'\s\w*'。我已经在一个在线正则表达式解释器上测试了这个正则表达式,它成功了 我已经用CMake编写了这段代码(当然是在设置了变量之后): 当我这样做时,脚本会抱怨字符跳过无效(S和w)。因此,接下来,我试图避开两
set(var "String0 String_1 String_2")
我需要从这个变量(“String0”
)中选择第一个空格之前的内容,并用这个内容创建一个新变量
我使用CMake的REGEX-MATCH
方法来实现这一点,并使用这个REGEX:'\s\w*'
。我已经在一个在线正则表达式解释器上测试了这个正则表达式,它成功了
我已经用CMake编写了这段代码(当然是在设置了变量之后):
当我这样做时,脚本会抱怨字符跳过无效(S
和w
)。因此,接下来,我试图避开两条斜线:
string(REGEX MATCH "\\S\\w*" NEW_VAR "${VAR}")
现在NEW\u VAR
equal'S'
,而不是我所期望的“String0”
请帮我纠正这一点,因为我对正则表达式和CMake几乎没有经验。您还可以搜索空白字符第一次出现的位置,并选择从该字符串开始到该位置的:
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}\"")
我用过这个,它很有效(不确定它在所有情况下都有多好):
[(A-z)|(A-z)|(0-9)]*CMake有自己的,并且此规范缺少像
\S
和\w
这样的字符类。谢谢。我找到了一个有效的正则表达式。不确定这是否适用于所有情况,但从我测试的堆栈溢出情况来看,我们倾向于不回答问题帖子本身中的问题。相反,你被允许这样做。请将您最后的Edit
paragraph移到答题栏。完成。抱歉,花了2周时间谢谢,但我正在寻找更小的smth,就像一行代码一样,不再:D@Kennedy问题中未说明,但无需担心。这仅仅是2行代码,没有使用正则表达式,因此可能有一些优点;我不确定你遇到了什么样的字符串。我在解释器中尝试过一些例子,它是有效的。应该没问题,谢谢
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}\"")