如何提取R

时间:2016-10-10 15:35:20

标签: r regex stringr

我想提取给定字符串中的最后4位数字,但无法弄明白。最后4位数字可以是“XXXX”或“XXXX-”。最后,我有一份异类条目清单,包括单年(即2001年或2001年),年份清单(即2001年,2004年 - ),年份范围(即2001年至2010年),或这些的组合在条目末尾有或没有短划线(“ - ”)。

我意识到'$'是识别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]]

     

字符(0)

     

[[2]]

     

“2015”

     

[[3]]

     

字符(0)

我想要的结果是:

  

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

1 个答案:

答案 0 :(得分:3)

我们可以尝试sub

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