我想提取给定字符串中的最后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”
答案 0 :(得分:3)
我们可以尝试sub
sub(".*(\\d+{4}).*$", "\\1", test)
#[1] "2009" "2015" "2012"