2016-10-10 59 views
0

我想提取给定字符串中的最后4位数字,但无法弄清楚。最后4位数字可以是“XXXX”或“XXXX-”。最终,我有一份包括单年(即2001年或2001年),年份列表(即2001年,2004年),年份范围(即2001年至2010年)或这些组合在结尾处有或没有破折号(“ - ”)。如何提取R中字符串的最后4位数字

我意识到'$'是标识END的标记,'^'用于标识正则表达式中的START。我能够轻松提取FIRST 4。下面是什么我可以做一个例子,并没有针对最后4位数字的工作代码:

library(stringr) 
test <- c("2009-", "2008-2015", "2001-, 2003-2010, 2012-") 
str_extract_all(test, "^[[:digit:]]{4}") # Extracts FIRST 4 

[[1]]

[1] “2009”“ 2008" “2001”

str_extract_all(test, "[[:digit:]]{4}$") # Does not extract LAST 4 

[[1]]

字符(0)

[[2]]

“2015”

[[3]]

字符(0)

str_extract_all(test, "\\d{4}$") 

[[1]]

character(0)

[[2]]

“2015”

[[3]]

字符(0)

我希望的结果是:

[1]“2009”“2015”“2012”

回答

2

我们可以sub

sub(".*(\\d+{4}).*$", "\\1", test) 
#[1] "2009" "2015" "2012" 
+1

优秀试试吧!完美的作品。 –

相关问题