在R中提取一个子串

Extract a substring in R

> ldata2[2]
    [1] "  \"pretty\": \"5:06 PM GMT on June 18, 2015\","
# Need to extract only the time information. In this case "5:06 PM GMT on June 18, 2015"
# My attempt
> time <- sub(".* :\"(.*)".*","\1",ldata2[1])

这是我收到的错误消息:Error: unexpected symbol in "time <- sub(".* :\"(.*)"." 帮助赞赏

library(stringr)
str_match(x, ': \"(.*)\"')[2]
#[1] "5:06 PM GMT on June 18, 2015"

cat 在创建正则表达式模式时用作参考。

x <- "  \"pretty\": \"5:06 PM GMT on June 18, 2015\","
cat(x)
"pretty": "5:06 PM GMT on June 18, 2015",

反斜杠不见了。我什至没有在我的正则表达式中引用它们。模式 ': \"(.*)\"' 以冒号、space 和一组双引号开头。冒号和 space 不需要特殊字符。双引号具有特殊的正则表达式含义,因此该集合使用两个反斜杠进行转义。接下来是捕获组和另一个转义双引号集。

带子:

sub('.*: \"(.*)\",', '\1', x)
[1] "5:06 PM GMT on June 18, 2015"

您的模式与字符串不匹配,因此不会替换任何内容。这是正确的模式:

sub(".*: \"(.*)\".*","\1",ldata[2])