Как вывести числовой интервал из строки в Hive - PullRequest
0 голосов
/ 28 августа 2018

У меня есть столбец с описаниями предметов. Например, как это:

1 Frozen Pacific Whiting Fillets, Skin-on, Value Bag, 4 lbs.
2 Raised Fresh Atlantic Salmon Fillet, 1.5-2.5 lbs

Я хочу извлечь 1.5-2.5 из строки 2. Я не хочу просто извлекать числа, но числовой диапазон.

Я пытался использовать приведенное ниже выражение, но оно не работает:

regex_Extract(column,(.*?)[0-9]\\.[0-9](-)[0-9]\\.[0-9],0)

1 Ответ

0 голосов
/ 28 августа 2018

Обратите внимание, что в Hive группы регулярных выражений начинаются с 1, а не с 0.

regexp_extract(col,'([0-9]+\\.?[0-9]+-[0-9]+\\.?[0-9]+)',1)

Если значению интервала должен предшествовать пробел и следовать за ним, используйте

regexp_extract(col,'(^|\\s)([0-9]+\\.?[0-9]+-[0-9]+\\.?[0-9]+)(\\s|$)',2)

В этом решении предполагается, что в строке есть только одно значение интервала.

  • (^|\\s) - соответствует пробелу или началу строки
  • ([0-9]+\\.?[0-9]+-[0-9]+\\.?[0-9]+) - соответствует цифре (ам), за которой следует необязательный ., затем цифре (цифрам), затем -, затем цифре (цифрам), за которой следует необязательная ., с последующей цифрой (ями)
  • (\\s|$) - соответствует пробелу или концу строки
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...