Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex CMake正则表达式匹配_Regex_Cmake - Fatal编程技术网

Regex 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)。因此,接下来,我试图避开两

我有一个CMake字符串变量:

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}\"")