我需要匹配来自R的字符串中的作者和时间。
test = "Postedby BeauHDon Friday November 24, 2017 @10:30PM from the cost-effective dept."
我目前正在使用gsub()
来查找所需的输出。
预期输出为:
#author
"BeauHDon"
#Month
"November"
#Date
24
#Time
22:30
我到了gsub("Postedby (.*).*", "\\1", test)
,但输出是
"BeauHDon Friday November 24, 2017 @10:30PM from the cost-effective dept."
另外,我了解time
在提取10:30
后需要更多编码。
如果下两个字符串为12
,则可以添加PM
吗?
谢谢。
答案 0 :(得分:2)
我们可以使用捕获作为一组进行提取(假设模式如示例所示)。这里的模式是匹配一个或多个非白色空格(\\S+
),后跟空格(\\s+
)来自字符串的开头(^
),后跟我们捕获的单词在一个组(\\w+
)中,然后在我们跳过下一个单词和空格后捕获单词,然后获取数字((\\d+)
)和@
v1 <- scan(text=sub("^\\S+\\s+(\\w+)\\s+\\w+\\s+(\\w+)\\s+(\\d+)[^@]+@(\\S+).*",
"\\1,\\2,\\3,\\4", test), what = "", sep=",", quiet = TRUE)
由于最后一个条目是时间,我们可以使用strptime
将其转换为日期时间并更改format
,将其分配给最后一个元素
v1[4] <- format(strptime(v1[4], "%I:%M %p"), "%H:%M")
如果需要,请使用author,Month等设置元素的名称。
names(v1) <- c("#author", "#Month", "#Date", "#Time")
v1
# #author #Month #Date #Time
#"BeauHDon" "November" "24" "22:30"