【发布时间】:2015-08-05 15:47:30
【问题描述】:
我正在尝试从一串文本中解析日期。我假设最好的方法是正则表达式,但我还没有找到有效的解决方案。
首先,我使用 CSS 选择器从网站中获取日期。
date <-html_nodes(x=doc, css=".middleheadline+ .topnewsbar b") %>% html_text()
这会产生:
[1] "\r\n Washington,\r\n Jan 5, 2011"
我想从此字符串中提取日期本身(此处为 2011 年 1 月 5 日)。注意:月份可以是任何月份,日期可以是任何日期,年份可以是 2011-2015 之间的任何时间,所以我试图找到一个通常可以解析 Mon D[D] 中的日期的表达式, YYYY 格式。
这是一次尝试:
date <-str_extract_all(string=date, pattern='[A-Z][a-z]{3,4} ([0-9]{1,2}), [0-9]{4}')
这会产生character(0)
还有一个:
grep("[A-Z][a-z]{3,4} ([0-9]{1,2}), [0-9]{4}", date, value=TRUE)
这也会产生character(0)
有什么建议吗?
【问题讨论】:
-
也许
grep("\\w{3,4} \\d{1,2}, \\d{4}, date, value=TRUE)我还没有测试过这个。\\w标签将匹配字母字符,\\d标签匹配数字。 -
日期总是在字符串的末尾,还是总是在最后一个
"\r\n"之后? -
我同意 Joshua 的暗示,即我们需要更多关于输入内容的信息——而不仅仅是日期的内容。只要我们能识别输入,转换为实际日期类型就足够容易了。如果它总是在输入字符串的末尾,那它真的很容易
-
谢谢! grep 解决方案仍然生成整个字符串,但 strsplit 代码有效。对于我正在抓取的许多网站,日期在
"\r\n"之后,但不是全部。