2016-10-08 237 views
1

我正在嘗試使用R中的包stringi來從字符串中提取數字。串的模式是:R:從字符串中提取數字

1 nomination 
2 wins 
1 win & 3 nominations 
2 wins & 1 nomination 
won 1 Oscar. Another 5 wins & 2 nominations 

我希望提取在每個串的數量(一個或多個)。如果只有贏得提名,把唯一的數字作爲贏/提名。

到目前爲止,我已經試過如下:

test <- "6 wins & 3 nominations." 

str_extract(test, regex="\\w*\\d\\w*") 

但是,這僅給出了第一個數字,不包括第二個數字。

stri_extract(test, regex="\\w*\\d+wins(\\s*+&+\\s*)(\\d)")給出NA。

工作方式如下,而是由第一分割字符串感覺太笨重,繼stri_extract:

t <- strsplit(test, "&") # split the string first 
win_num <- stri_extract(t[1], regex="\\d") 
nomination_num <- stri_extract(t[2], regex="\\d") # if exists 

什麼辦法可以使在一個行正則表達式的工作方式?謝謝!

回答

1

若要提取多個數字,請使用str_extract_all,它會返回list輸出。

str_extract_all(test, "\\d+")[[1]] 
+1

它實際上是'stri_extract_all(test,regex =「\\ d +」)[[1]]',謝謝! – TonyGW

+0

@TonyGW是的,我沒有指定'regex =',但它沒有指定它。 – akrun