【发布时间】:2018-12-19 16:33:20
【问题描述】:
以下 regexp_extract 函数在 Impala 中似乎可以工作,但在 Hive 中使用时不起作用:
select regexp_extract("efwe FR wefwef", '.*?([[:upper:]]+).*?', 1)
Impala 中的结果是 FR(正如我所料,即第一组中的大写字符)
Hive 中的结果是 e(不是我所期望的)
谁能解释这是为什么?
通过研究这个问题,我了解到将正则表达式转换为 java 风格的正则表达式可能会有所帮助 (http://www.regexplanet.com/advanced/java/index.html)。但据我所知,Java Style Regex 与我所拥有的相同。
【问题讨论】:
-
Impala 似乎使用 RE2,而 Java 正则表达式则完全不同。在 Hive 中使用
'.*?(\\p{Lu}+).*'