Как удалить не-альфа-числовые или нечисловые символы с помощью функции Hive REGEXP EXTRACT()

Я пытался выяснить, как удалить несколько не буквенно-цифровых или нечисловых символов или вернуть только числовые символы из строки. Я пробовал:

SELECT
regexp_extract('X789', '[0-9]', 0)
FROM
table_name

но он возвращает '7', а не '789'.

Я также попытался удалить нечисловые символы, используя не соответствующий синтаксис ^((?!регулярное выражение.))*$:

SELECT
REGEXP_REPLACE('X789', '^((?![0-9]).)*$', '')
FROM
jav_test_ii

может ли regexp_extract возвращать несколько совпадений? Что я действительно пытаюсь сделать, это очистить мои данные должен содержать только цифры или буквенно-цифровой письмена. Это, кажется, помогает удалить плохие символы, но его не диапазон символов, таких как [0-9]. regexp_replace(строка, '�',")

EDIT: приведенный ниже запрос смог вернуть '7789', что именно то, что я искал.

SELECT
regexp_replace("7X789", "[^0-9]+", "")
FROM
table_name

1 ответов


см. также улей regexp_extract странность

Я думаю, что regex_extract вернет только номер группы, указанный в 3-м параметре.

regex_extract кажется, работает только на линии, а затем уходит.

Я не знаю о замене аналога.

это может работать на не буквенных данных, хотя, если вы подали ему что-то вроде этого

REGEXP_REPLACE(error_code, '[^a-zA-Z0-9]+', '')


кроме того, для извлечения, см. ссылку выше и вы можете изменить его на

regexp_extract('X789', '[0-9]+', 0) на несколько номеров.

или

regexp_extract('XYZ789', '[a-zA-Z]+', 0) для нескольких Альфы.