如何从文本中提取日期

时间:2018-08-10 14:43:26

标签: r regex web-scraping anytime

我试图从以下文本中提取日期。不幸的是,它一直在警告我,结果是NA

我有以下内容:

"IRA-401K Investment Assets Under Management (AUM)  As of July 31, 2018 BMG Funds  
$217,743,573 BMG BullionBars  $45,176,561 TOTAL  $262,920,134 Physical Holdings Download 
Scotiabank BMG BullionBars List Download Brinks BMG BullionBars List Holdings by Ounces As 
of July 31, 2018  Gold Bars 21,132.496 Silver Bars 453,531.574 Silver Coins 
80,500 Platinum Bars"

文本包含以下日期:2018年7月31日。这些日期在文本中出现两次。

我使用以下代码从文本中提取日期。

test_take <- lapply(cleanurl_text, parse_date_time, orders = "mdy", 
             locale = Sys.setlocale('LC_TIME', locale = "English_Canada.1252"))

我收到以下错误消息:

  

警告信息:       所有格式均无法解析。找不到格式。

当我包含确切= TRUE

test_take <- lapply(as.character(cleanurl_text), parse_date_time, orders = "mdy", 
       locale = Sys.setlocale('LC_TIME', locale = "English_Canada.1252"), exact = TRUE)

我收到以下警告:

  

警告信息:        1个解析失败。

结果对象仍然包含NA

1 个答案:

答案 0 :(得分:0)

以下正则表达式可以以发布的格式提取日期。

pattern <- paste(month.name, collapse = "|")
pattern <- paste0("(", pattern, ")\\s\\d{1,2}.{1,2}\\d{4}")

m <- gregexpr(pattern, cleanurl_text)
regmatches(cleanurl_text, m)
#[[1]]
#[1] "July 31, 2018" "July 31, 2018"

请注意,这只能在一行代码regmatches(gregexpr(.))中完成,但我选择了两行以使其更具可读性。