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

在R中使用str_extract_all从PDF提取日期时间字段失败求助

解决R中str_extract_all提取PDF跨行列日期时间的问题

你的正则匹配失败有两个核心原因:

  1. "Est Date"和目标日期时间分属两行,原正则用+仅匹配空格,无法识别换行符;
  2. 原正则未包含时间部分的匹配规则,即使匹配到日期也拿不到完整的日期时间值。

修正方案

根据PDF文本的结构,用以下两种方式调整正则表达式:

方式1:匹配包含"Est Date"的完整片段

library(stringr)
# 模拟PDF提取的文本
pdf_text <- "Est Date
14-Apr-1988 11:59:49"

# 修正后的正则:用\\s+匹配任意空白(含换行),同时覆盖时间部分
Est_date <- str_extract_all(pdf_text, "Est Date\\s+\\d{2}-[A-Za-z]{3}-\\d{4}\\s+\\d{2}:\\d{2}:\\d{2}")

输出结果会包含"Est Date\n14-Apr-1988 11:59:49"。

方式2:仅提取日期时间部分(不含"Est Date")

用正向先行断言排除"Est Date",只保留目标值:

Est_date_only <- str_extract_all(pdf_text, "(?<=Est Date\\s+)\\d{2}-[A-Za-z]{3}-\\d{4}\\s+\\d{2}:\\d{2}:\\d{2}")

输出结果为[[1]] [1] "14-Apr-1988 11:59:49",完全符合你的预期。

正则规则说明

  • \\s+:匹配1个或多个任意空白字符(包括换行、空格、制表符),解决跨换行的匹配问题;
  • (?<=Est Date\\s+):正向先行断言,确保目标内容前存在"Est Date"加空白,但不将其纳入结果;
  • \\d{2}-[A-Za-z]{3}-\\d{4}:匹配日-英文月缩写-年的格式;
  • \\s+\\d{2}:\\d{2}:\\d{2}:匹配空格分隔的时:分:秒时间格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 17:47:04