2015-06-18 6 views
2
> 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(".* :\"(.*)"." Помощи оценилаИзвлечение подстроки в R

+1

Вы забыли избежать второй кавычки. –

+0

@MatthewPlourde Я не совсем это вижу. Не могли бы вы указать на это? –

+0

Сколько кавычек находится в вашем шаблоне? –

ответ

2

Ваш шаблон не соответствует строке, поэтому ничего не будет заменен. Вот правильный рисунок:

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

Совершенно верно. Я также пропустил \ after (. *). благодаря –

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('.*: \\"(.*)\\",', '\\1', x) 
[1] "5:06 PM GMT on June 18, 2015" 
+1

Или 'gsub ('. *: \\ s *" | ", $'," ", x)' – akrun