Hive 中字符串的正则表达式前导零

Regex leading zeros from string in Hive

我在 Hive 中有一个 19 字符的字符串,我需要拆分并删除所有前导零。

示例

7212092180052740029

我需要这样拆分

721 20 9218 00527 40029

因此第一、第二或第三部分中没有前导零,并且 00 将从第四部分中删除;第 5 节将被忽略。我想要的结果是

721209218527

我的第一个解决方案是

trim(concat_ws('', regexp_replace(substr(some_string, 1, 3),  '^0*', '')
                 , regexp_replace(substr(some_string, 4, 2),  '^0*', '')
                 , regexp_replace(substr(some_string, 6, 4),  '^0*', '')
                 , regexp_replace(substr(some_string, 10, 5), '^0*', '')))

但这似乎有点矫枉过正。任何想法如何用一行正则表达式来做到这一点?

此外,需要注意的是,在 5 个部分中的任何一个部分,当拆分时,都不会全为零(即第一个部分永远不会 000);如果是这样,那么我的 'solution' 将不起作用,因为 所有 零将是前导零,而 '^0* 将 return 没有。

^0*|(?<=^.{3})0*|(?<=^.{5})0*|(?<=^.{9})0*|(?<=^.{14}).*$

您可以使用此正则表达式并替换为 empty string。查看演示。

https://regex101.com/r/rO0yD8/15