hive - Регулярное выражение в функции Split, не выдающее результат.

Я хочу разбить строку на четыре символа, каждый из которых использует запрос куста.

Вход: abcdefghijkl

select split("abcdefghijkl", '([a-zA-Z0-9]{4})') from table limit 1;

Выходные данные: ["","","",""]

Требуемый выход: ["abcd","efgh","ijkl"]

Всего 1 ответ


Вы можете использовать

select split(regexp_replace("abcdefghijkl",'.*?([a-zA-Z0-9]{4})',',$1'),',') as output;

Соответствие .*?([a-zA-Z0-9]{4})

  • .*? - любые символы 0+, как можно меньше
  • ([a-zA-Z0-9]{4}) - Запись группы 1: 4 буквенно-цифровых символов

Матч заменяется на и , и содержимое группы 1. Затем split разбивает результат на запятую.


Есть идеи?

10000