我正在尝试从以下字符中提取第一个时间戳:
" WHENSEPTEMBER 14,2015 @ 11:56 AM - 12:00 PM EDT"
我有一个完整的列表,根据需要它们是矢量。
> is.vector(data$description)
[1] TRUE
> is.vector(data$info)
[1] TRUE
>str_extract(data$info, "\\@ [0-9]+:[0-9]{2}")
Error in stri_extract_first_regex(string, pattern, opts_regex = attr(pattern, :
argument `str` should be a character vector (or an object coercible to)
我意识到我的正则表达式还不完全正确但只是第一次提取。但在这一点上它不会提取任何东西。我不确定我在这里做错了什么。任何帮助表示赞赏。
答案 0 :(得分:2)
我们是否只需要'HH:MM'部分或者还需要AM/PM
并不是很清楚。如果这只是为了在@
之后提取空格后提取“HH:MM”,我们可以使用正则表达式((?<=\\@ )
)来匹配后跟:
后跟两个数字的数字数字。另外,请指定regex
或fixed
。
library(stringi)
stri_extract(v1, regex="(?<=\\@ )[0-9]+:[0-9]{2}")
#[1] "11:56"
或使用stringr
library(stringr)
str_extract(v1, "(?<=\\@ )[0-9]+:[0-9]{2}")
#[1] "11:56"
v1 <- "WHENSEPTEMBER 14, 2015 @ 11:56 AM - 12:00 PM EDT"
答案 1 :(得分:-1)
您的数据向量似乎有些问题。这些函数在您提供的字符串上正常工作:
x <- "WHENSEPTEMBER 14, 2015 @ 11:56 AM - 12:00 PM EDT"
x
[1] "WHENSEPTEMBER 14, 2015 @ 11:56 AM - 12:00 PM EDT"
str_extract(x, "\\@ [0-9]+:[0-9]{2}")
[1] "@ 11:56"