Руководство Hive гласит следующее:
Обратите внимание, что при использовании предопределенных классов символов необходимо соблюдать осторожность: использование '\ s' в качестве второго аргумента будет соответствовать букве s;'\\ s' необходимо для соответствия пробелу и т. д.
Кроме того, ваше выражение включает в себя ненужные символы в классе символов.
Попробуйте это:
REGEXP_EXTRACT(column_name,'_[A-Z](\\d{7})',0)
Поскольку вам нужна только часть без подчеркивания, используйте это:
REGEXP_EXTRACT(column_name,'_([A-Z]\\d{7})',1)
Соответствует всему шаблону, но извлекает только вторую группу вместо всего соответствия.
Или альтернативно:
REGEXP_EXTRACT(column_name,'(?<=_)[A-Z]\\d{7}', 0)
При этом используется метод регулярного выражения, называемый "позитивный взгляд назад".Это переводится как: «найди мне заглавный алфавит, за которым следуют 7 цифр, но только , если перед ними стоит _».Он использует _ для сопоставления, но не считает его частью извлеченного совпадения.