Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Str_提取不工作_Regex_R_Stringr - Fatal编程技术网

Regex Str_提取不工作

Regex Str_提取不工作,regex,r,stringr,Regex,R,Stringr,我正在尝试从以下字符中提取第一个时间戳: “当2015年11月14日美国东部夏令时上午11:56至下午12:00” 我有一个完整的列表,它们是向量,根据需要 > 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, p

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

“当2015年11月14日美国东部夏令时上午11:56至下午12:00”

我有一个完整的列表,它们是向量,根据需要

> 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
。如果这只是为了在
@
后面加一个空格后提取'HH:MM',我们可以使用regex lookarounds(
(?数据向量似乎有问题。函数在您提供的字符串上正常工作:

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"

x您能发布输出dput(数据)吗,因为我尝试此操作时得到“@11:56”。请听取反馈并提供dput(数据)或str(数据).如果你仔细阅读is.vector,我想你会意识到它误导了你。
str
是一个很好的朋友,他透露了很多信息。你有没有
str
-ed
数据
?你能发布
str()
您的数据,已经请求了两次?如果没有可复制的示例,这是无法解决的。我投票关闭了。您使用的是stringi软件包,而我使用的是stringr软件包。然而,当我使用您的正则表达式时,这不起作用。我不担心正则表达式,我担心的是函数根本不起作用并将显示在question@user3859248对不起,我弄错了。但是,
stringr
string
i
的包装器。顺便说一句,如果您使用的是
stringr
,您不需要指定
regex=`。它对我有效。@user3859248 BTW,我正在
r3.2.2上使用
stringr\u 1.0.0
k你,是的,所以我认为问题会一直存在,好像我没有真正的向量,就像我想的那样。谢谢你的帮助,你的正则表达式提取了我想要的东西,现在可以工作了,谢谢你!@user3859248谢谢你的反馈。
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"