Regex 正则表达式用空格替换一个字符
我在AWS日志文件中有一个时间戳,格式如下:2021-04-04T12:21:29Z 此正则表达式将时间戳捕获为三组:Regex 正则表达式用空格替换一个字符,regex,amazon-s3,amazon-athena,Regex,Amazon S3,Amazon Athena,我在AWS日志文件中有一个时间戳,格式如下:2021-04-04T12:21:29Z 此正则表达式将时间戳捕获为三组: (?<utcDate>[0-9]{4}-[0-9]{2}-[0-9]{2})(?:T)(?<utcTime>[0-9]{2}:[0-9]{2}:[0-9]{2}) (?[0-9]{4}-[0-9]{2}-[0-9]{2})(?:T)(?[0-9]{2}:[0-9]{2}:[0-9]{2}) 输出:2021-04-04T12:21:29 我试图用一个空
(?<utcDate>[0-9]{4}-[0-9]{2}-[0-9]{2})(?:T)(?<utcTime>[0-9]{2}:[0-9]{2}:[0-9]{2})
(?[0-9]{4}-[0-9]{2}-[0-9]{2})(?:T)(?[0-9]{2}:[0-9]{2}:[0-9]{2})
输出:2021-04-04T12:21:29
我试图用一个空格替换T,以创建有效的时间戳格式,通过AWS Athena导入SQL时间戳列。我已经在使用date_parse将两个utcDate和utcTime组连接到select语句中的时间戳中。但是我想在我的表中有一个时间戳,这样我就可以在where子句中查询时间戳
当我将上面的正则表达式放入一个由子组组成的组时,即使T是在非捕获组中定义的,它仍然会返回。是否可以匹配一个字符T并用空格替换它
谢谢您的帮助。如果您想用空格替换
T
:replace(列名,'T','')
。如果您想从ISO 8601字符串中获得时间戳
:来自\u iso8601\u时间戳(列名称)
您使用什么工具进行匹配和替换?我在AWS Athena create external table语句中使用正则表达式输入。不捕获并不意味着“不匹配”。捕获只是将匹配的一部分保存在单独的内存缓冲区中。您需要访问组,或替换。确定,但替换只能在初始正则表达式运行后进行?是否可以在替换中使用两个捕获组,如$1$2
?有2个捕获组,而不是3个,因为这部分(?:T)
可以写成T
。是的,但是替换函数只能在正则表达式完成后运行。替换可以在正则表达式中完成吗?您能详细说明一下这是什么意思吗?