Str_extract 不工作

Str_extract not working

我正在尝试从以下字符中提取第一个时间戳:

"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)

我意识到我的正则表达式还不完全正确,只是第一次提取。但此时它不会提取任何东西。我不确定我在这里做错了什么。感谢任何帮助。

目前还不清楚我们是只需要 'HH:MM' 部分还是还需要 AM/PM 部分。如果这只是为了提取 @ 后跟 space 之后的 'HH:MM',我们可以使用正则表达式查找 ((?<=\@ )) 来匹配 [=16= 后跟的数字] 后跟两位数字。此外,指定 regexfixed.

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"

您的数据向量似乎有问题。这些函数在您提供的字符串上正常工作:

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"