Регулярные выражения в R, чтобы получить дату - PullRequest
1 голос
/ 18 марта 2020

Что может быть лучшим решением для получения только даты, это тег веб-страницы. Я надеюсь, что кто-то может мне помочь.

Шаблоны - это значение на многих страницах "publAtDate": "2020-02-07"

Я хотел бы получить следующий результат: 2020-02 -07

Я использую этот код:

art_publishdate<-regexpr("publishedAtDate\":\"[0-9]{4}-[0-9]{2}-[0-9]{2}\"", thepage)

, но результат включает в себя много обратной косой черты.

[1] "publishedAtDate\":\"2020-02-07\""

Спасибо

Ответы [ 3 ]

1 голос
/ 18 марта 2020

Два способа захвата вывода.

Используя gsub, мы удаляем все, пока не встретится двоеточие (:).

string <- '"publishedAtDate":"2020-02-07"'
gsub('.*:|"', '', string)
#[1] "2020-02-07"

Или, используя sub, мы можем извлечь шаблон даты.

sub('.*?(\\d+-\\d+-\\d+).*', '\\1', string)
#[1] "2020-02-07"
0 голосов
/ 18 марта 2020

Другое решение, использующее str_extract из пакета stringr:

str_extract(string, "[0-9]{4}-[0-9]{2}-[0-9]{2}")
[1] "2020-02-07"

В качестве альтернативы, дата может быть извлечена таким образом:

str_extract(string, "[0-9-]+")
[1] "2020-02-07"

Другой альтернативой является использование положительного взгляда. позади (который кодирует инструкцию «Совпадение, если вы видите слева ...»), а также класс отрицательных символов [^"], который исключает кавычку, но не другой символ:

str_extract(string, '(?<=:")[^"]*')
[1] "2020-02-07"
0 голосов
/ 18 марта 2020

Вы можете просто выбрать номера и отформатировать их as.Date.

as.Date(gsub("\\D", "\\1", '"publishedAtDate":"2020-02-07\"'), format="%Y%m%d")
# [1] "2020-02-07"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...