As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
REGEXP_ SUBSTR função
Retorna caracteres de uma string pesquisando nela por um padrão de expressão regular. REGEXP_ SUBSTR é semelhante à Função do SUBSTRING função, mas permite pesquisar um padrão de expressão regular em uma string. Se a função não conseguir corresponder a expressão regular com nenhum caractere na string, ela retornará uma string vazia.
Sintaxe
REGEXP_SUBSTR ( source_string, pattern [, position [, occurrence [, parameters ] ] ] )
Argumentos
- source_string
-
Uma expressão de string a ser pesquisada.
- pattern
-
Um literal de string que representa um padrão de expressão regular.
- position
-
Um inteiro positivo que indica a posição em source_string para começar a pesquisar. A posição é baseada no número de caracteres, e não bytes, de forma que caracteres multibyte são contados como caracteres simples. O padrão é um. Se a posição for menor que 1, a pesquisa começará no primeiro caractere da source_string. Se position for maior que o número de caracteres na source_string, o resultado será uma string vazia ("").
- occurrence
-
Um número inteiro positivo que indica qual ocorrência do padrão usar. REGEXP_ SUBSTR pula a primeira ocorrência -1 partidas. O padrão é um. Se a ocorrência for menor que 1 ou maior que o número de caracteres em source_string, a pesquisa será ignorada e o resultado será. NULL
- parameters
-
Uma ou mais literais de sequências que indicam como a função corresponde o padrão. Os valores possíveis são os seguintes:
-
c – Executa a correspondência diferenciando maiúsculas e minúsculas. O padrão é usar a correspondência diferenciando maiúsculas e minúsculas.
-
i – Executa a correspondência sem diferenciar maiúsculas de minúsculas.
-
e – Extrai uma subsequência usando uma subexpressão.
Se o padrão incluir uma subexpressão, REGEXP _ SUBSTR corresponderá a uma substring usando a primeira subexpressão no padrão. Uma subexpressão é uma expressão dentro do padrão que está entre parênteses. Por exemplo, para o padrão
'This is a (\\w+)'
faz correspondência com a primeira expressão com a string'This is a '
seguida por uma palavra. Em vez de retornar o padrão, REGEXP _ SUBSTR com oe
parâmetro retorna somente a string dentro da subexpressão.REGEXP_ SUBSTR considera somente a primeira subexpressão; subexpressões adicionais são ignoradas. Se o padrão não tiver uma subexpressão, REGEXP _ SUBSTR ignorará o parâmetro 'e'.
-
p — Interprete o padrão com o dialeto Perl Compatible Regular Expression (PCRE).
-
Tipo de retorno
VARCHAR
Exemplo
O seguinte exemplo retorna a porção de um endereço de e-mail entre o caractere @ e a extensão de domínio.
SELECT email, regexp_substr(email,'@[^.]*') FROM users ORDER BY userid LIMIT 4; email | regexp_substr -----------------------------------------------+-------------------------- Etiam.laoreet.libero@sodalesMaurisblandit.edu | @sodalesMaurisblandit Suspendisse.tristique@nonnisiAenean.edu | @nonnisiAenean amet.faucibus.ut@condimentumegetvolutpat.ca | @condimentumegetvolutpat sed@lacusUtnec.ca | @lacusUtnec
O exemplo a seguir retorna a porção da entrada correspondente à primeira ocorrência da string FOX
com a correspondência sem diferenciar maiúsculas de minúsculas.
SELECT regexp_substr('the fox', 'FOX', 1, 1, 'i'); regexp_substr --------------- fox
O exemplo a seguir retorna a primeira parte da entrada que começa com letras minúsculas. Isso é funcionalmente idêntico à mesma SELECT declaração sem o c
parâmetro.
SELECT regexp_substr('THE SECRET CODE IS THE LOWERCASE PART OF 1931abc0EZ.', '[a-z]+', 1, 1, 'c'); regexp_substr --------------- abc
O exemplo a seguir usa um padrão escrito no PCRE dialeto para localizar palavras contendo pelo menos um número e uma letra minúscula. Ele usa o ?=
operador, que tem uma conotação específica de visualização antecipada em. PCRE Este exemplo retorna a parte da entrada correspondente à segunda palavra.
SELECT regexp_substr('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', 1, 2, 'p'); regexp_substr --------------- a1234
O exemplo a seguir usa um padrão escrito no PCRE dialeto para localizar palavras contendo pelo menos um número e uma letra minúscula. Ele usa o ?=
operador, que tem uma conotação específica de visualização antecipada em. PCRE Este exemplo retorna a parte da entrada correspondente à segunda palavra, mas difere do exemplo anterior na medida em que usa a correspondência sem diferenciar maiúsculas de minúsculas.
SELECT regexp_substr('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', 1, 2, 'ip'); regexp_substr --------------- A1234
O exemplo a seguir usa uma subexpressão para encontrar a segunda string correspondente ao padrão 'this is a (\\w+)'
usando a correspondência que não diferencia letras maiúsculas de minúsculas. Ele retorna a subexpressão dentro dos parênteses.
select regexp_substr( 'This is a cat, this is a dog. This is a mouse.', 'this is a (\\w+)', 1, 2, 'ie'); regexp_substr --------------- dog