Необходимо извлечь начало слова, удалив последнее вхождение символов ^ до конца с помощью выражения регулярного выражения - PullRequest
0 голосов
/ 10 июня 2018

Я хочу использовать regex_replace или regexp_extract в улье, где я могу получить только первые n вхождения специального символа "^" , кроме последнего вхождения и текста после последнего вхождения.f Например:

  • 101^11 должен извлечь 101
  • 101^1111^232 должен извлечь 101^1111
  • 144^899^890^1 должен извлечь 1144^899^890

Я имею дело только с регулярным выражением, а не со строковыми функциями или udf.

1 Ответ

0 голосов
/ 10 июня 2018

Попробуйте с regexp_extract function

В улье:

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|
+---+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...