2017-07-28 134 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

相關問題