【问题标题】:Regex to match dates in R正则表达式匹配 R 中的日期
【发布时间】:2020-12-24 20:48:22
【问题描述】:

我在一个文件夹中保存了多个 pdf 文件。我需要从数据框中的每个文件中提取“2020 年 11 月 19 日”等格式的第一个日期。

这是我正在使用的代码:

myextr2 <- function(pdffile) {
  text_data <- pdf_text(pdffile)
  text_collapsed_data <- paste0(text_data, collapse = '\n')
  g=stringi::stri_extract( text_collapsed_data, regex = ("(Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|Jun(e)?|Jul(y)?|Aug(ust)?|Sep(tember)?|Oct(ober)?|Nov(ember)?|Dec(ember)?)/s+/d{1,2}/s+/d{4}")
  g[1]
}
files <- list.files(pattern = "pdf$")
pricing = sapply(files, myextr2)
pricing

我收到以下错误:

Error: unexpected '}' in "}"

在这方面需要帮助。

【问题讨论】:

  • 您好,我在正则表达式末尾缺少一个右括号,但无法获取任何日期
  • 如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则更容易为您提供帮助。也许还可以看到:stackoverflow.com/questions/51035220/…filingdb.com/b/pdf-text-extraction
  • 这是\s\d,而不是/s/d。 (虽然我不知道 R,所以可能需要转义反斜杠)。此外,示例中的“Novemeber”拼写错误(代码之外)。除此之外,模式本身works fine。它只是有太多不必要的捕获组。

标签: r regex date extract


【解决方案1】:

您可以使用lubridate 包。

library(lubridate)

d = "November 19 2020"
mdy(d)
# [1] "2020-11-19"
library(stringr)

str_extract(d, "(Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|Jun(e)?|Jul(y)?|Aug(ust)?|Sep(tember)?|Oct(ober)?|Nov(ember)?|Dec(ember)?)\\s+\\d{1,2}\\s+\\d{4}")
# [1] "2020-11-19"

【讨论】:

    【解决方案2】:

    这是我尝试过的正则表达式,并且正在以我的形式工作 只是一个小的更正它是我之前发布的第一个日期值的第二个日期值 ''' str_extract_all(text_collapsed_data , "(\b(Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|Jun(e)?|Jul(y)?|Aug(ust)?| Sep(tember)?|Oct(ober)?|Nov(ember)?|Dec(ember)?)\s+\d{1,2},\s+\d{4})|(\b(JAN(UARY )?|FEB(RUARY)?|MAR(CH)?|APR(IL)?|MAY|JUN(E)?|JUL(Y)?|AUG(UST)?|SEP(TEMBER)?|OCT(OBER )?|NOV(EMBER)?|DEC(EMBER)?)\s+\d{1,2},\s+\d{4})" , 简化 = TRUE)[,2] '''

    【讨论】:

      猜你喜欢
      • 2011-08-24
      • 2011-06-10
      • 1970-01-01
      • 1970-01-01
      • 2011-12-17
      • 1970-01-01
      • 2011-08-29
      • 1970-01-01
      相关资源
      最近更新 更多