Apache Hive regexp extract UDF
estou a encontrar um pedaço de código na colmeia Apache como o regexp_extract(entrada, '[0-9]*', 0), alguém me pode explicar o que este código faz? Obrigado.
2
Author: Charles Menguy, 2013-01-17
2 answers
A partir de o manual da colmeia DDL , devolve o texto extraído usando o padrão. o por ex. regexp_extract('foothebar', 'foo(.*?)(bar)', 2)
devolve bar
.
O parâmetro index
é o grupo de captura, que é um inteiro que pode tomar os seguintes valores:
- 0: todo o jogo, no meu exemplo seria
foothebar
- 1: o primeiro grupo, no meu exemplo seria
the
- 2: o segundo grupo, no meu exemplo seria
bar
- n: n-ésimo grupo. Se n for maior que o número real de grupos definidos no seu regexp, a sua consulta da colmeia irá falhar.
No seu exemplo, regexp_extract(input, '[0-9]*', 0)
, está à procura de toda a correspondência para a sua coluna Identificada por input
e começando com um valor numérico.
-
regexp_extract('9eleven', '[0-9]*', 0)
- > devolve9
-
regexp_extract('9eleven', '[0-9]*', 1)
-> query fails -
regexp_extract('911test', '[0-9]*', 0)
- > devolve911
-
regexp_extract('911test', '[0-9]*', 1)
-> query fails -
regexp_extract('eleven', '[0-9]*', 0)
- > devolve um texto vazio -
regexp_extract('test911', '[0-9]*', 0)
- > devolve Texto vazio
18
Author: Charles Menguy, 2013-01-17 15:59:37
A resposta acima está parcialmente incorrecta. Vai certamente devolver o 112. Nunca especificamos o início do texto antes [0-9]*
2
Author: yupyupyupyup, 2018-04-19 07:16:54