Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Función REGEXP_REPLACE
Busca una cadena para un patrón de expresión regular y reemplaza cada coincidencia del patrón con una cadena especificada. REGEXP_REPLACE es similar a Función REPLACE, pero le permite buscar un patrón de expresión regular en una cadena.
REGEXP_REPLACE es similar a Función TRANSLATE y a Función REPLACE, salvo que TRANSLATE realiza varias sustituciones de caracteres únicos y REPLACE sustituye una cadena entera por otra cadena, mientras que REGEXP_REPLACE le permite buscar un patrón de expresión regular en una cadena.
Sintaxis
REGEXP_REPLACE ( source_string, pattern [, replace_string [ , position [, parameters ] ] ] )
Argumentos
- source_string
-
Una expresión de cadena, como un nombre de columna, que se buscará.
- pattern
-
Un literal de cadena que representa un patrón de expresión regular.
- replace_string
-
Una expresión de cadena, como un nombre de columna, que reemplazará cada coincidencia del patrón. El valor predeterminado es una cadena vacía ( "" ).
- position
-
Valor entero positivo que indica la posición dentro de source_string (cadena_de_origen) para comenzar la búsqueda. La posición se basa en la cantidad de caracteres, no bytes, por lo que los caracteres multibyte se cuentan como caracteres simples. El valor predeterminado de es 1. Si el valor de position (posición) es menor que 1, la búsqueda comienza en el primer carácter de source-string (cadena_de_origen). Si el valor de position (posición) es mayor que la cantidad de caracteres de source-string (cadena_de_origen), el resultado es source_string (cadena_de_origen).
- parameters
-
Uno o varios literales de cadena que indican el grado de coincidencia de la función con el patrón. Los valores posibles son los siguientes:
-
c: aplica la coincidencia que distingue entre mayúsculas y minúsculas. El comportamiento predeterminado es utilizar la coincidencia que distingue entre mayúsculas y minúsculas.
-
i: aplica la coincidencia que no distingue entre mayúsculas y minúsculas.
-
p: interpreta el patrón con el dialecto de expresión regular compatible con Perl (PCRE).
-
Tipo de retorno
VARCHAR
Si el valor de pattern o la replace_string es NULL, el valor devuelto es NULL.
Ejemplo
En el siguiente ejemplo, se elimina el @
y el nombre de dominio de direcciones de correo electrónico.
SELECT email, regexp_replace(email, '@.*\\.(org|gov|com|edu|ca)$') FROM users ORDER BY userid LIMIT 4; email | regexp_replace -----------------------------------------------+---------------- Etiam.laoreet.libero@sodalesMaurisblandit.edu | Etiam.laoreet.libero Suspendisse.tristique@nonnisiAenean.edu | Suspendisse.tristique amet.faucibus.ut@condimentumegetvolutpat.ca | amet.faucibus.ut sed@lacusUtnec.ca | sed
En el siguiente ejemplo, se reemplazan los nombres de dominio de las direcciones de email con este valor: internal.company.com
.
SELECT email, regexp_replace(email, '@.*\\.[[:alpha:]]{2,3}', '@internal.company.com') FROM users ORDER BY userid LIMIT 4; email | regexp_replace -----------------------------------------------+-------------------------------------------- Etiam.laoreet.libero@sodalesMaurisblandit.edu | Etiam.laoreet.libero@internal.company.com Suspendisse.tristique@nonnisiAenean.edu | Suspendisse.tristique@internal.company.com amet.faucibus.ut@condimentumegetvolutpat.ca | amet.faucibus.ut@internal.company.com sed@lacusUtnec.ca | sed@internal.company.com
En el siguiente ejemplo, se reemplazan todas las veces que aparece la cadena FOX
en el valor quick brown fox
, con una coincidencia que no distingue entre mayúsculas y minúsculas.
SELECT regexp_replace('the fox', 'FOX', 'quick brown fox', 1, 'i'); regexp_replace --------------------- the quick brown fox
En el siguiente ejemplo, se utiliza un patrón escrito en el dialecto de PCRE para localizar palabras que contengan al menos un número y una letra en minúsculas. Se utiliza el operador ?=
, que tiene una connotación específica de anticipación en PCRE. En este ejemplo, se reemplaza cada vez que aparece una palabra que reúne esas características con el valor [hidden]
.
SELECT regexp_replace('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', '[hidden]', 1, 'p'); regexp_replace ------------------------------- [hidden] plain A1234 [hidden]
En el siguiente ejemplo, se utiliza un patrón escrito en el dialecto de PCRE para localizar palabras que contengan al menos un número y una letra en minúsculas. Se utiliza el operador ?=
, que tiene una connotación específica de anticipación en PCRE. En este ejemplo, se reemplaza cada vez que aparece una palabra que reúne esas características con el valor [hidden]
, pero difiere del ejemplo anterior, ya que se utiliza una coincidencia sin distinción entre mayúsculas y minúsculas.
SELECT regexp_replace('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', '[hidden]', 1, 'ip'); regexp_replace ---------------------------------- [hidden] plain [hidden] [hidden]