Повторение шаблона регулярного выражения для разбора даты - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть следующая строка

"31032017"

, и я хочу использовать регулярные выражения в R, чтобы получить

"31.03.2017"

Какова лучшая функция, чтобы сделать это?И общий вопрос, как я могу повторить соответствующую часть, как в sed в bash?Там мы используем \1, чтобы повторить первую подобранную часть.

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

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

sub("([0-9]{2})([0-9]{2})([0-9]{4})", "\\1.\\2.\\3", "31032017")

Затем вы можете использовать \\ 1 для доступа к части, соответствующей первой группе, \\ 2 для второй и т. Д.on.

Обратите внимание, что если ваша строка является датой, есть лучшие способы ее анализа / переформатирования, чем непосредственное использование регулярного выражения.

0 голосов
/ 27 сентября 2018
date_vector = c("31032017","28052017","04052022")

as.character(format(as.Date(date_vector, format = "%d%m%Y"), format = "%d.%m.%Y"))

#[1] "31.03.2017" "28.05.2017" "04.05.2022"

Если вы хотите работать / делать математику с датами, опустите as.character.

...