我看了一些关于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 函数。
s
、w
等)的每个位置添加额外的反斜杠即可。 - David Arenburg