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

如何在R语言中从杂乱文本字符串提取日期和时间段?

在R中提取杂乱文本里的日期和时间段

嗨,这个文本提取的需求我帮你搞定!针对你给出的杂乱文本,我们可以用正则表达式配合stringr包轻松提取目标内容,具体步骤如下:

1. 准备工作:安装并加载工具包

stringr是R里处理字符串非常便捷的工具包,先安装(第一次使用时)并加载它:

install.packages("stringr") # 仅需安装一次
library(stringr)

2. 定义你的杂乱文本变量

把你提到的杂乱内容存成一个R变量:

messy_text <- "Seuat eselyt
                    
        ti 30.07.2019 klo 12:00 - 14:30
                        Tau ski 2342342 2342342
                "

3. 提取日期

你的日期格式是dd.mm.yyyy,对应的正则表达式可以精准匹配这种格式:

extracted_date <- str_extract(messy_text, "\\d{2}\\.\\d{2}\\.\\d{4}")
print(extracted_date)
# 输出结果:"30.07.2019"

正则解释:\\d{2}匹配两位数字,\\.匹配实际的点(因为正则里的点默认匹配任意字符,所以要转义),\\d{4}匹配四位年份数字。

4. 提取时间段

时间段格式是hh:mm - hh:mm,同样用正则匹配:

extracted_time_range <- str_extract(messy_text, "\\d{2}:\\d{2} - \\d{2}:\\d{2}")
print(extracted_time_range)
# 输出结果:"12:00 - 14:30"

5. 一次性提取并整理成数据框(可选)

如果想把日期和时间段一次性提取并整理成结构化的数据框,可以用str_match:

# 正则里用括号标记两个要提取的分组
match_results <- str_match(messy_text, "(\\d{2}\\.\\d{2}\\.\\d{4}).*(\\d{2}:\\d{2} - \\d{2}:\\d{2})")

# 转成数据框
result_df <- data.frame(
  日期 = match_results[2],
  时间段 = match_results[3],
  stringsAsFactors = FALSE
)

print(result_df)
# 输出:
#         日期        时间段
# 1 30.07.2019 12:00 - 14:30

如果你的文本里日期/时间段格式有小变动(比如偶尔出现一位的日/月),可以把正则里的\\d{2}改成\\d{1,2},这样就能匹配1-2位的数字啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:29:46