R:用于日期提取的正则表达式

R:用于日期提取的正则表达式,r,regex,date,R,Regex,Date,我正在尝试使用R从txt文件中提取日期模式。 我想我可以使用str_extract和正则表达式,但无法得到能够给出预期结果的正则表达式 这种模式类似于 2016年1月21日 2019年3月3日 2013年4月15日 等等 我目前的设置是将文本文件加载到R中,并将其作为名为mystring的字符串变量,然后 pattern <- "January|February|March|May|June|July|August|September|October|November|D

我正在尝试使用R从txt文件中提取日期模式。 我想我可以使用str_extract和正则表达式,但无法得到能够给出预期结果的正则表达式

这种模式类似于

2016年1月21日

2019年3月3日

2013年4月15日

等等

我目前的设置是将文本文件加载到R中,并将其作为名为mystring的字符串变量,然后

    pattern <- "January|February|March|May|June|July|August|September|October|November|December\\s\\d{1,2},\\s\\d{4}"
    
    str_extract_all(mystring,pattern)

pattern为什么不使用
lubridate
mdy()
函数,该函数将字符串转换为一个日期,您可以根据需要解析该日期

mdy("January 21, 2016")

[1] "2016-01-21"

以下是一个具有多个随机日期的示例:

random_dates <- format(sample(seq(as.Date('2018/01/01'), as.Date('2020/01/01'), by="day"), 12), "%B %d, %Y")

tidy_dates <- mdy(random_dates)
致:


对不起,也许我不清楚我是否需要先提取多个日期(大约200个左右)。之后,我应该能够使用mday()转换与您的示例类似的格式谢谢!这将是转换部分的精确解决方案,但我仍然必须首先找出只提取这些日期的正确正则表达式。在月份周围加上括号,不要忘记包括四月<代码>模式就是这样!妄想症大约持续数月。谢谢你指出四月也不见了:)偏执论在这方面到底做了什么?括号里澄清了最后的交替是十二月,与之前的月份列表一起,而不是十二月加上日期和年份。如果没有括号,正则表达式会自动匹配单词“一月”到“十一月”,或者“十二月日,yyyy”。str\u extract\u all(mystring,pattern)
返回什么?你能提供一个
mystring
的例子吗?它很长,所以我只发布其中的一部分。总的来说,它似乎捕获了txt文件中出现的所有月份名称,而不是像“2016年1月21日”这样的设置模式。[1] “二月”“二月”“五月”“五月”“十一月”“五月”“六月”“二月”“一月”“五月”“十月”“五月”“五月”“五月”“五月”“五月”“五月”“五月”“五月”“三月”
 [1] "June 05, 2018"     "December 23, 2019" "October 20, 2019"  "July 17, 2019"     "February 26, 2019" "January 25, 2018" 
 [7] "August 16, 2018"   "February 08, 2019" "July 31, 2019"     "May 05, 2019"      "November 30, 2018" "March 28, 2018" 
 [1] "2018-06-05" "2019-12-23" "2019-10-20" "2019-07-17" "2019-02-26" "2018-01-25" "2018-08-16" "2019-02-08" "2019-07-31" "2019-05-05"
[11] "2018-11-30" "2018-03-28"