Rac*_* B. 5 regex grep parsing r date
我试图从一串文本中解析一个日期.我假设最好的方法是使用正则表达式,但我还没有找到一个有效的解决方案.
首先,我使用CSS选择器从网站上获取日期.
date <-html_nodes(x=doc, css=".middleheadline+ .topnewsbar b") %>% html_text()
Run Code Online (Sandbox Code Playgroud)
这会产生:
[1] "\r\n Washington,\r\n Jan 5, 2011"
Run Code Online (Sandbox Code Playgroud)
我想从这个字符串中提取日期本身(这里是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}')
Run Code Online (Sandbox Code Playgroud)
这产生了 character(0)
而另一个:
grep("[A-Z][a-z]{3,4} ([0-9]{1,2}), [0-9]{4}", date, value=TRUE)
Run Code Online (Sandbox Code Playgroud)
这也产生 character(0)
有小费吗?
你也可以试试strsplit().有时我更喜欢它而不是一个令人头脑麻木的正则表达式.
test <- c("\r\n Washington,\r\n Jan 5, 2011",
"\r\n Boston,\r\n Mar 15, 2015")
vapply(strsplit(test, ".*\n\\s+"), "[", "", 2)
# [1] "Jan 5, 2011" "Mar 15, 2015"
as.Date(vapply(strsplit(test, ".*\n\\s+"), "[", "", 2), "%b %d, %Y")
# [1] "2011-01-05" "2015-03-15"
Run Code Online (Sandbox Code Playgroud)
你可以试试这个:
date <-str_extract_all(string=date, pattern='\\w+\\s\\d+(st)?(nd)?(rd)?(th)?,\\s+\\d+')
Run Code Online (Sandbox Code Playgroud)
这里是测试链接。
| 归档时间: |
|
| 查看次数: |
3931 次 |
| 最近记录: |