我想在hive中使用regex_replace或regexp_extract,我只能获得第一个 n 出现的特殊字符“^”,除了最后一次出现和最后一个文本发生。 F 例如:
101^11
应提取101
101^1111^232
应提取101^1111
144^899^890^1
应提取1144^899^890
我只使用正则表达式而不是字符串函数或udf。
答案 0 :(得分:2)
试试 regexp_extract 功能
在蜂巢中:
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|
+---+
在Pyspark:
>>> hiveContext=HiveContext(sc)
>>> df=hiveContext.sql("select regexp_extract('101^11','(.*)\\\^',1)")
>>> df.show()
+---+
|_c0|
+---+
|101|
+---+