2017-07-28 304 views
1

我想从字符串中提取第一个数字。如何从字符串中提取字符串的第一个数字

s <- '100 xx-50 xx xxxx' 

我可以使用str_extract从stringr

str_extract(s, '\\d+') 
[1] "100" 

如何提取与基础R子字符串? 我试过了:

sub('(\\d+)\\s.', '\\1', s) 
[1] "100x-200 xx hello" 

我做错了什么?我无法弄清楚。 非常感谢。

回答

2

我们可以使用sub匹配一个或后跟其他字符(.*)更多的空间(\\s+)和空白(""

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

在OP的代码替换,在空格后( \\s)有一个.这意味着任何字符和字符串中的字符数量更多,因此它不匹配字符串中的字符。相反,如果我们被捕获组的路线走,

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

.*意味着零个或多个字符,也注意到^用于指定字符串的开头,这样它不会从匹配数字开始其他字符串

+1

谢谢!我错过了* – zesla

+0

@zesla谢谢你的提示。你也可以勾选[here](https://stackoverflow.com/help/someone-answers) – akrun