【问题标题】:R: regular expression for date extractionR:日期提取的正则表达式
【发布时间】:2020-11-04 01:37:27
【问题描述】:

我正在尝试使用 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)

我认为我在正确的轨道上,但不能完全让它发挥作用。 最终,我还想将提取的内容转换为日期,并将字符数据更改为默认的“2019-03-01”格式,但我首先需要弄清楚如何提取数据。

【问题讨论】:

  • str_extract_all(mystring,pattern) 返回什么?你能提供一个mystring 的例子吗?
  • 篇幅比较长,我只贴一部分。总的来说,看起来它正在捕获出现在 txt 文件中的所有月份名称,而不是像“2016 年 1 月 21 日”这样的设置模式。 [1] “二月” “二月” “五月” “五月” “五月” “十一月” “五月” “六月” “二月” [10] “一月” “五月” “十月” “五月” “五月” “五月” “五月”“五月”“五月”[19]“三月”

标签: r regex date


【解决方案1】:

为什么不使用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)

发件人:

 [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"

【讨论】:

  • 抱歉,我可能不清楚我需要先提取多个日期(大约 200 个左右)。之后,我应该可以使用 mday() 转换类似于您的示例的格式
  • 谢谢!这将是转换部分的精确解决方案,但我仍然必须找出正确的正则表达式才能首先提取这些日期。
  • 用括号括住月份,别忘了包括四月! pattern &lt;- "(January|February|March|April|May|June|July|August|September|October|November|December)\\s\\d{1,2},\\s\\d{4}"
  • 就是这样! Parantheses 几个月左右。感谢您指出 April 也不见了 :) parantheses 在这方面实际上做了什么?
  • 括号阐明了最后的交替只是December 并且与前面的月份列表一起属于,而不是十二月加上日和年。如果没有括号,正则表达式将匹配单词 'January' 到 'November' 或 'December dd, yyyy'。
猜你喜欢
  • 1970-01-01
  • 2017-05-13
  • 2020-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-12
  • 2020-12-24
  • 2019-07-17
相关资源
最近更新 更多