如何从r中带有sub的字符串中提取第一个数字

如何从r中带有sub的字符串中提取第一个数字,r,regex,R,Regex,我正在尝试从字符串中提取第一个数字 s <- '100 xx-50 xx xxxx' 如何提取以r为底的sub字符串? 我试过: sub('(\\d+)\\s.', '\\1', s) [1] "100x-200 xx hello" 我做错了什么?我想不出来。 非常感谢 我们可以使用sub匹配一个或多个空格(\\s+),后跟其他字符(*),并替换为空白(“) 在OP的代码中,空格(\\s)后面有一个,表示任何字符,并且字符串中有更多字符,因此它与字符串中的字符不匹配。相反,如果我们走

我正在尝试从字符串中提取第一个数字

s <- '100 xx-50 xx xxxx'
如何提取以r为底的sub字符串? 我试过:

sub('(\\d+)\\s.', '\\1', s)
[1] "100x-200 xx hello"
我做错了什么?我想不出来。
非常感谢

我们可以使用
sub
匹配一个或多个空格(
\\s+
),后跟其他字符(
*
),并替换为空白(


在OP的代码中,空格(
\\s
)后面有一个
,表示任何字符,并且字符串中有更多字符,因此它与字符串中的字符不匹配。相反,如果我们走的是捕获组路线

sub("^(\\d+)\\s.*", "\\1", s)
#[1] "100"
*
表示零个或多个字符,还请注意
^
用于指定字符串的开头,以便它不会从字符串中其他位置的匹配数字开始

sub("\\s+.*", "", s)
#[1] "100"
sub("^(\\d+)\\s.*", "\\1", s)
#[1] "100"