如何在没有可用分隔符的情况下从 mmddyyyy 字符串中分离年份?

FIS*_*HnR 2 r gsub

有没有办法从这些字符串中获取日期?我只想隔离年份(例如,2019、2020、2021)

例如:USP_0318 2019 _H13

一个 tidyr 友好的答案将是理想的。

date <- c("USP_03182019_H13","DED_03212019_H1","EL_03202019_H8","EL_10082020_H6","DSP_05122021_H5")

#              date
#1 USP_03182019_H13
#2  DED_03212019_H1
#3   EL_03202019_H8
#4   EL_10082020_H6
#5  DSP_05122021_H5
Run Code Online (Sandbox Code Playgroud)

Ony*_*mbu 5

library(lubridate)
year(mdy(parse_number(date)))
[1] 2019 2019 2019 2020 2021
Run Code Online (Sandbox Code Playgroud)

或者

sub('.*(\\d{4})_.*', '\\1', date)
[1] "2019" "2019" "2019" "2020" "2021"

stringr::str_extract(date, '\\d{4}(?=_)')
[1] "2019" "2019" "2019" "2020" "2021"
Run Code Online (Sandbox Code Playgroud)