必须通过剥离最后出现的符号^字符来提取单词的开头,以regex extract结束

qco9c6ql  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(292)

我想在hive中使用regex\u replace或regexp\u extract,在这里我只能获得特殊字符“^”的前n个匹配项,除了最后一个匹配项和最后一个匹配项之后的文本。例如: 101^11 应该提取
101 101^1111^232 应该提取
101^1111 144^899^890^1 应该提取 1144^899^890 我只能处理regex,不能处理字符串函数或udf。

fwzugrvs

fwzugrvs1#

尝试使用regexp\u提取函数
在Hive中:

hive> select regexp_extract('101^11',"(.*)\\^",1)
+------+--+
| _c0  |
+------+--+
| 101  |
+------+--+

在scala中:

scala> val hiveContext = new HiveContext(sc)
scala> val df= hiveContext.sql("""select regexp_extract('101^11','(.*)\\\^',1)""");
scala> df.show()
+---+
|_c0|
+---+
|101|
+---+

在Pypark中:

>>> hiveContext=HiveContext(sc)
>>> df=hiveContext.sql("select regexp_extract('101^11','(.*)\\\^',1)")
>>> df.show()
+---+
|_c0|
+---+
|101|
+---+

相关问题