【发布时间】:2021-07-04 16:16:58
【问题描述】:
我在 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})
输出:2021-04-04T12:21:29
我正在尝试将 T 替换为空格以创建有效的时间戳格式,以通过 AWS Athena 导入 SQL 时间戳列。我已经在我的 select 语句中使用 date_parse 将两个 utcDate 和 utcTime 组连接成一个时间戳。但我想在我的表中有一个时间戳,这样我就可以在 where 子句中查询时间戳。
当我将上述正则表达式组合成一个由子组组成的组时,即使在非捕获组中定义了 T,它仍然会返回。是否可以匹配一个字符 T 并用空格替换它?
感谢您的帮助。
【问题讨论】:
-
你用什么工具来匹配和替换?
-
我在我的 AWS Athena 创建外部表语句中使用正则表达式输入。
-
非捕获并不意味着“不匹配”。捕获只是将匹配的一部分保存在单独的内存缓冲区中。您需要访问组或替换。
-
好的,但是替换只能在初始正则表达式运行之后进行?
-
你能像
$1 $2那样在替换中使用2个捕获组吗?有 2 个捕获组而不是 3 个,因为这部分(?:T)可以写成T。
标签: regex amazon-s3 amazon-athena