You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用tidyverse从URL编码文件名中提取月份年份格式的日期

基于tidyverse的日期提取解决方案

核心思路:你的文件名日期格式非常固定,均为【英文月份全称+空格+4位年份】的组合,直接通过正则匹配即可一步提取,不需要提前构造月份向量做多步处理。


完整实现代码

1. 加载依赖包

library(tidyverse)

2. 构造示例测试数据

file_names <- c(
  "NHS%20Workforce%20Statistics%2C%20April%202018%20Organisation%20-%20Excel%20tables.xlsx",
  "NHS%20Workforce%20Statistics%2C%20September%202018%20Organisation.xlsx"
)

3. 提取日期(两种可选方案)

方案1:先解码URL编码再提取(通用性更强,后续处理其他内容也方便)

result <- file_names %>%
  # 解码URL编码的特殊字符(把%20转为空格、%2C转为逗号,R默认加载的utils包自带该函数)
  map_chr(URLdecode) %>%
  # 直接匹配「英文月份+空格+4位年份」的组合
  str_extract("(January|February|March|April|May|June|July|August|September|October|November|December)\\s+\\d{4}")

运行后result的输出即为:"April 2018" "September 2018",完全符合要求。

方案2:不解码直接匹配(步骤更少,仅针对当前场景)

result <- file_names %>%
  # 直接匹配编码后的日期格式,最后把%20替换为空格
  str_extract("(January|February|March|April|May|June|July|August|September|October|November|December)(%20)+\\d{4}") %>%
  str_replace("%20", " ")

规则说明

正则里的月份列表已经覆盖了所有英文月份全称,年份部分用\\d{4}匹配任意4位数字,不限制为2018,后续年份更新也可以正常识别。

内容的提问来源于stack exchange,提问作者Sagar Jhamb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 06:06:04