【发布时间】:2015-01-15 15:33:13
【问题描述】:
我已经阅读了一些关于正则表达式中 R 捕获组的其他问题,但我运气不佳。
我有一个字符串:
127.0.0.1 - - [07/Dec/2014:06:43:43 -0800] \"OPTIONS * HTTP/1.0\" 200 - \"-\" \"Apache/2.2.14 (Ubuntu) PHP/5.3.2-1ubuntu4.24 with Suhosin-Patch mod_ssl/2.2.14 OpenSSL/0.9.8k mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1 (internal dummy connection)\"
我试图从中捕获时间戳:
07/Dec/2014:06:43:43 -0800
以下函数调用返回一个匹配项:
regmatches(x,regexpr('\\[([\\w:/]+\\s[+\\-]\\d{4})\\]',x,perl=TRUE))
[1] "[07/Dec/2014:06:43:43 -0800]"
我尝试使用 str_match 来捕获单个组本身,并使用各种不同的正则表达式:
str_match(x, "\\[([\\w:/]+\\s[+\\-]\\d{4})\\]")
[,1] [,2]
[1,] NA NA
无济于事。在大多数在线正则表达式测试器中,此正则表达式的不同种类测试正确,所以我认为正则表达式不是问题。
我怎样才能得到时间戳本身,这样我就可以将它泵入strptime,而不用像gsub括号一样? gsub 无法为我获取组,str_match 不起作用,我错过了什么?理想的输出是
07/Dec/2014:06:43:43 -0800
然后我可以在 strptime 中使用它。
【问题讨论】: