Select 带点和冒号的数字字符串

Select numeric string with dots and colon

我有这个字符串

string <- "Hospitalization from 25.1.2018 to 26.1.2018", "Date of hospitalization was from 28.8.2019 8:15", "Date of arrival 30.6.2018 20:30 to hospital")

我想在字符串的数字部分(带点和冒号)得到这个

print(dates)

    c("25.1.2018", "26.1.2018", "28.8.2019 8:15", "30.6.2018 20:30")

我试过了

dates <- gsub("([0-9]+).*$", "\1", string)

但它只给了我第一个点之前的第一个数字

您可以使用

library(stringr)
unlist(str_extract_all(string, "\d{1,2}\.\d{1,2}\.\d{4}(?:\s+\d{1,2}:\d{1,2})?"))
# => [1] "25.1.2018"       "26.1.2018"       "28.8.2019 8:15"  "30.6.2018 20:30"

参见regex demo

详情

  • \d{1,2} - 一位或两位数
  • \. - 一个点
  • \d{1,2}\.\d{4} - 一个或两个数字,一个点和四个数字
  • (?:\s+\d{1,2}:\d{1,2})? - 可选的出现
    • \s+ - 一个或多个空格
    • \d{1,2}:\d{1,2} - 一位或两位数,: 和一位或两位数。

使用sapply:

sapply(str_extract_all(string, "[0-9.:]+"), paste0, collapse = " ")
[1] "25.1.2018 26.1.2018" "28.8.2019 8:15"      "30.6.2018 20:30"