Как извлечь только дату из строки пути к файлу, которая также включает время в формате 2020.04.12.10.30.10? - PullRequest
2 голосов
/ 21 января 2020

У меня есть строка filepath, которая выглядит следующим образом:

\\\\server\file\path\string\10X_blah.2020.04.12.10.30.10.xls

Мне нужно извлечь только 2020.04.12

Я пробовал (?<=\.).*(?=\.)

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

Я использую R и mutate(date = str_extract(filepath, pattern), чтобы создать новый столбец в моем фрейме данных. Я просто не знаю регулярное выражение, чтобы найти только дату.

Ответы [ 2 ]

1 голос
/ 21 января 2020

Все, что вам нужно сделать, это:

\\d{4}\\.\\d{2}\\.\\d{2}

В R:

stringr::str_extract_all(my_string,"\\d{4}\\.\\d{2}\\.\\d{2}")
[[1]]
[1] "2020.04.12"

объяснение:

  1. \\d{4}\\. четыре ди git год, за которым следует точка
  2. \\d{2}\\. два ди git месяц, за которым следует точка
  3. \\d{2} два ди git день
1 голос
/ 21 января 2020

Это не очень сильное решение, так как требует определения длины перед substring ing. Взгляд в будущее может быть более идеальным. Тем не менее, мы можем сделать:

my_string<- readClipboard() # copy the file path

substring(stringr::str_remove_all(my_string,"\\D.*(?=\\d{4,})"),
          1,10)
[1] "2020.04.12"

Если вы знаете точный шаблон (ie, что 10 всегда следует за a, а это 10 всегда существует), то возможно:

stringr::str_remove_all(my_string,"\\D.*(?=\\d{4,})|\\.10.*")
[1] "2020.04.12"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...