我想将以字符串形式显示的工作日提取到列表中。欣赏是否有人可以建议简单的出路。
strg <- 'Consumer bot --At 08:00 PM, only on Monday, Tuesday, Wednesday, Thursday, and Friday'
期望结果在列表中,例如:"Monday" "Tuesday" "Wednesday" "Thursday" "Friday"
答案 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"