在R中提取子字符串

时间:2015-06-18 17:31:28

标签: r substring gsub

> 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(".* :\"(.*)"." 帮助赞赏

2 个答案:

答案 0 :(得分:2)

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

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

使用sub:

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

答案 1 :(得分:2)

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

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