小编jat*_*tal的帖子

REGEXP_REPLACE捕获组

我想知道是否有人可以帮助我理解如何使用Hive的regexp_replace函数来捕获正则表达式中的组并在替换字符串中使用这些组.

我有一个示例问题,我正在通过下面的工作,涉及日期修改.在这个例子中,我的目标是获取与SimpleDateFormat解析不兼容的字符串日期,并进行一些小调整以使其兼容.日期字符串(如下所示)需要在字符串中的偏移符号(+/-)前面添加"GMT".

所以,给定输入:

  '2015-01-01 02:03:04 +0:00' 
  -or-
  '2015-01-01 02:03:04 -1:00' 
Run Code Online (Sandbox Code Playgroud)

我想要输出:

  '2015-01-01 02:03:04 GMT+0:00'
  -or-
  '2015-01-01 02:03:04 GMT-1:00'
Run Code Online (Sandbox Code Playgroud)

这是一个我认为会起作用的声明的简单例子,但我得到了奇怪的输出.

Hive查询:

select regexp_replace('2015-01-01 02:03:04 +0:00', ' ([+-])', ' GMT\1');
Run Code Online (Sandbox Code Playgroud)

实际结果:

2015-01-01 02:03:04 GMT10:00
Run Code Online (Sandbox Code Playgroud)

请注意,"\ 1"应输出匹配的组,而是使用数字"1"替换匹配的组.

有人可以帮我理解在替换字符串中引用/输出匹配组的正确方法吗?

谢谢!

regex hadoop hive regexp-replace

11
推荐指数
1
解决办法
6779
查看次数

标签 统计

hadoop ×1

hive ×1

regex ×1

regexp-replace ×1