[英]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.