REGEXP_REPLACE¶
Retorna a entidade com o padrão especificado (ou todas as ocorrências do padrão), seja removida ou substituída por uma cadeia de caracteres substituta. Se não for encontrada nenhuma correspondência, retorna a entidade original.
Consulte também Funções de cadeia de caracteres (expressões regulares).
Sintaxe¶
REGEXP_REPLACE( <subject> , <pattern> [ , <replacement> , <position> , <occurrence> , <parameters> ] )
Argumentos¶
Obrigatório:
subject
Sujeito à correspondência.
pattern
Padrão a atender.
Opcional:
replacement
Cadeia de caracteres que substitui as subcadeias de caracteres combinadas pelo padrão. Se uma cadeia de caracteres vazia for especificada, a função remove todos os padrões correspondentes e retorna a cadeia de caracteres resultante.
Padrão:
''
(cadeia de caracteres vazia).position
Número de caracteres desde o início da cadeia de caracteres onde a função começa a procurar correspondências.
Padrão:
1
(a busca por uma correspondência começa no primeiro caractere à esquerda)occurrence
Especifica a ocorrência do padrão a ser substituído. Se
0
for especificado, todas as ocorrências são substituídas.Padrão:
0
(todas as ocorrências)parameters
Cadeia de caracteres de um ou mais caracteres que especifica os parâmetros usados para a busca de correspondências. Valores com suporte:
c
,i
,m
,e
,s
Para obter mais detalhes, consulte parâmetros de expressão regular.
Padrão:
c
Notas de uso¶
A cadeia de caracteres de substituição pode conter referências inversas para capturar grupos (ou seja, subexpressões do padrão). Um grupo de captura é uma expressão regular que se encontra entre parênteses (
( )
). O número máximo de grupos de captura é 9.As referências anteriores correspondem a expressões dentro de um grupo de captura. As referências inversas tem a forma
n
onden
é um valor de 0 a 9, inclusive, que se refere à instância correspondente do grupo de captura. Para obter mais detalhes, consulte Exemplos (neste tópico).Os parênteses (
( )
) e colchetes ([ ]
) atualmente devem ser em forma de parênteses duplos para serem analisados como cadeias de caracteres literais.O exemplo abaixo mostra como remover parênteses:
SELECT REGEXP_REPLACE('Customers - (NY)','\\(|\\)','') AS customers; +----------------+ | CUSTOMERS | |----------------| | Customers - NY | +----------------+
Para notas adicionais de uso, consulte Notas de uso geral para funções de expressão regular.
Detalhes do agrupamento¶
Arguments with collation specifications are currently not supported.
Exemplos¶
O exemplo a seguir substitui todos os espaços na cadeia de caracteres por nada (ou seja, todos os espaços são removidos):
select regexp_replace('It was the best of times, it was the worst of times', '( ){1,}','') as "result" from dual;
+------------------------------------------+
| result |
|------------------------------------------|
| Itwasthebestoftimes,itwastheworstoftimes |
+------------------------------------------+
O exemplo a seguir corresponde à cadeia de caracteres times
e a substitui pela cadeia de caracteres days
. A correspondência começa no primeiro caractere na cadeia de caracteres e substitui a segunda ocorrência da subcadeia de caracteres:
select regexp_replace('It was the best of times, it was the worst of times', 'times','days',1,2) as "result" from dual;
+----------------------------------------------------+
| result |
|----------------------------------------------------|
| It was the best of times, it was the worst of days |
+----------------------------------------------------+
O exemplo a seguir usa referências anteriores para reorganizar a cadeia de caracteres firstname middlename lastname
como lastname, firstname middlename
e inserir uma vírgula entre lastname
e firstname
:
select regexp_replace('firstname middlename lastname','(.*) (.*) (.*)','\\3, \\1 \\2') as "name sort" from dual;
+---------------------------------------------------------------------------------+
| REGEXP_REPLACE('FIRSTNAME MIDDLENAME LASTNAME','(.*) (.*) (.*)','\\3, \\1 \\2') |
|---------------------------------------------------------------------------------|
| lastname, firstname middlename |
+---------------------------------------------------------------------------------+