提取r中字符串中存在的工作日

时间:2019-05-23 10:41:46

标签: r string

我想将以字符串形式显示的工作日提取到列表中。欣赏是否有人可以建议简单的出路。

strg <- 'Consumer   bot  --At 08:00 PM, only on Monday, Tuesday, Wednesday, Thursday, and Friday'

期望结果在列表中,例如:"Monday" "Tuesday" "Wednesday" "Thursday" "Friday"

2 个答案:

答案 0 :(得分:2)

我们可以尝试匹配以下所有出现的模式:

\b\w+day\b

示例脚本:

strg <- 'Consumer   bot  --At 08:00 PM, only on Monday, Tuesday, Wednesday, Thursday, and Friday'
m <- gregexpr("\\b\\w+day\\b", strg)
regmatches(strg, m)[[1]]

[1] "Monday"    "Tuesday"   "Wednesday" "Thursday"  "Friday"   

我们可以尝试使模式更具限制性,以避免不必要的匹配,例如holiday

\b(?:Mon|Tues|Wed|Thurs|Fri|Sat|Sun)day\b

但是对于您的示例数据,上述模式将产生相同的结果。

答案 1 :(得分:1)

我们还可以生成一周中的所有天,然后提取与模式匹配的那些天。

stringr::str_extract_all(strg, paste0(weekdays(Sys.Date()+0:6),collapse = "|"))[[1]]
#[1] "Monday"    "Tuesday"   "Wednesday" "Thursday"  "Friday" 

paste0全天生成。

paste0(weekdays(Sys.Date()+0:6), collapse = "|") 
#[1] "Thursday|Friday|Saturday|Sunday|Monday|Tuesday|Wednesday"