繁体   English   中英

正则表达式匹配 R 中的日期

[英]Regex to match dates in R

我在一个文件夹中保存了多个 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 "}"

在这方面需要帮助。

您可以使用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"

在这里,我尝试过的正则表达式只是一个小的更正,它是第二个日期值,因为我之前发布了''' 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] '''

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM