Función REGEXREPLACE( )
Reemplaza todas las instancias de cadenas que coinciden con una expresión regular por una nueva cadena.
Sintaxis
REGEXREPLACE( cadena; patrón; cadena_nueva)
Parámetros
Nombre | Tipo | Descripción |
---|---|---|
cadena |
carácter |
El campo, la expresión o el valor literal que se debe probar en busca de un patrón de coincidencias. |
patrón |
carácter |
La cadena de patrón (expresión regular) que se debe buscar. El patrón puede contener caracteres literales, metacaracteres o una combinación de ambos. Los caracteres literales incluyen todos los caracteres alfanuméricos, algunos caracteres de puntuación y los espacios en blanco. La búsqueda distingue entre mayúsculas y minúsculas; esto significa que se deben especificar explícitamente caracteres alfabéticos en mayúscula y minúscula. |
cadena_nueva | carácter |
La cadena que se debe utilizar para reemplazar todos los valores que coinciden con el patrón. La cadena de reemplazo puede contener caracteres literales, grupos de caracteres de la cadena original (con el elemento $int) o una combinación de ambos. |
Salida
Carácter.
Ejemplos
Ejemplos básicos
Trabajo con espacios
Devuelve "AB CD EF", reemplazando varios espacios entre los caracteres de texto por un solo espacio:
REGEXREPLACE("AB CD EF"; "\s+"; " ")
Devuelve los datos del campo de caracteres con el espaciado entre las palabras estandarizado con un solo espacio:
REGEXREPLACE(campo_caracteres; "\s+"; " ")
Devuelve los datos del campo de caracteres con el espaciado entre las palabras estandarizado con un solo espacio. El uso de la función BLANKS( ) en cadena_nueva, en lugar de un espacio literal, hace que los espacios sean más fáciles de leer y que resulte más difícil pasarlos por alto:
REGEXREPLACE(campo_caracteres; "\s+", BLANKS(1))
Estandarizar números de teléfono
Devuelve "(123) 456-7890". El formato del número de teléfono ‘1234567890’ está estandarizado:
REGEXREPLACE(SUBSTR("1234567890";1;14); "(\d{3})[\s-]*(\d{3})[\s-]*(\d{4})";"($1) $2-$3")
Devuelve los números del campo Número_teléfono y estandariza el formato:
REGEXREPLACE(Número_de_teléfono; ".*(\d{3})[\s-\.\)]*(\d{3})[\s-\.]*(\d{4})"; "($1) $2-$3")
Extrae "123-456-7890" del texto circundante:
REGEXREPLACE("Núm tel: 123-456-7890 (oficina)"; "(.*)(\d{3}[\s-\)\.]*\d{3}[\s-\.]*\d{4})(.*)"; "$2")
Extrae los números de teléfono de entre el texto que los rodea en el campo Comentario y estandariza el formato:
REGEXREPLACE(Comment; "(.*)(\d{3})[\s-\)\.]*(\d{3})[\s-\.]*(\d{4})(.*)"; "($2) $3-$4")
Identificación de formatos genéricos
Devuelve "9XXX-999xx", lo cual representa el formato genérico del valor especificado por cadena ("1ABC-123aa"):
REGEXREPLACE(REGEXREPLACE(REGEXREPLACE("1ABC-123aa";"\d";"9");"[a-z]";"x");"[A-Z]"; "X")
Devuelve el formato de todos los identificadores del campo Número_factura:
REGEXREPLACE(REGEXREPLACE(REGEXREPLACE(Número_de_factura;"\d";"9");"[a-z]";"x");"[A-Z]"; "X")
Estandarización del formato del nombre
Devuelve "John David Smith":
REGEXREPLACE("Smith, John David"; "^(\w+),(\s\w+)(\s\w+)?(\s\w+)?";"$2$3$4 $1")
Devuelve los nombres del campo Nombre_completo en el orden normal: Nombre (Segundo_nombre) (Tercer_nombre) Apellido:
REGEXREPLACE(Nombre_completo; "^(\w+),(\s\w+)(\s\w+)?(\s\w+)?";"$2$3$4 $1")
Nota
Los datos de nombre pueden presentar varias complicaciones, como la presencia de apóstrofes. Tener en cuenta las variaciones de los datos de nombre suele requerir expresiones regulares más complejas que las que se ofrecen en el ejemplo anterior.
Observaciones
Cómo funciona
La función REGEXREPLACE( ) utiliza una expresión regular para encontrar patrones coincidentes en los datos y reemplazar los valores coincidentes por una cadena nueva.
Por ejemplo:
REGEXREPLACE(campo_caracteres; "\s+"; " ")
estandariza el espaciado en los datos de caracteres reemplazando uno o más espacios entre caracteres por un único espacio.
La porción de búsqueda de la función REGEXREPLACE( ) es idéntica a la función REGEXFIND( ). Si desea obtener información detallada acerca de la capacidad de búsqueda común a ambas funciones, consulte Función REGEXFIND( ).
Cuándo usar REGEXREPLACE( )
Utilice REGEXREPLACE( ) cada vez que desee buscar y reemplazar datos en Analytics utilizando la coincidencia con un patrón complejo o simple.
Reemplazo de los caracteres por sí mismos
Puede utilizar el elemento $int para reemplazar caracteres por sí mismos, lo cual le permite conservar las partes significativas de los datos, mientras que se estandarizan o se omiten los caracteres que los rodean o están entremezclados con esas partes.
Más atrás, se incluyeron varios ejemplos con números de teléfono y nombres.
Para utilizar el elemento $int, primero debe crear grupos utilizando paréntesis ( ) dentro del valor patrón. Si desea obtener más información, consulte Función REGEXFIND( ).
Evitar la coincidencia de caracteres en secuencia
Puede evitar las coincidencias de caracteres en secuencia y reemplazar las subcadenas, sin importar la posición de unas respecto de otras anidando funciones REGEXREPLACE( ).
El problema en los siguientes dos ejemplos consiste en derivar un formato genérico a partir de los datos de origen alfanuméricos en el cual los números y las letras puedan aparecer en cualquier orden. Si se desconoce el orden de los números y las letras, ¿de qué manera se crea la cadena patrón?
La solución consiste en encontrar y reemplazar los números primero usando la función REGEXREPLACE( ) interna y, a continuación, buscar y reemplazar las letras utilizando la función REGEXREPLACE( ) externa.
Devuelve "999XXX":
REGEXREPLACE(REGEXREPLACE("123ABC";"\d";"9");"[A-Z]";"X")
Devuelve "9X9X9X":
REGEXREPLACE(REGEXREPLACE("1A2B3C";"\d";"9");"[A-Z]";"X")
Reemplazo de la longitud de la cadena y truncamiento
Al utilizar REGEXREPLACE( ) para crear un campo calculado, la longitud del campo calculado es idéntica a la longitud del campo original.
Si la longitud de la cadena de reemplazo supera la longitud de la cadena de destino, se incrementa la longitud total de la cadena, lo que provoca un truncamiento si la longitud del campo calculado no puede aceptar la mayor longitud de la cadena.
Los caracteres que se encuentran al final de la cadena de destino son los primeros que se truncan, seguidos por los últimos caracteres de la cadena de reemplazo. Los ejemplos que se incluyen a continuación muestran el truncamiento:
cadena |
patrón |
cadena_nueva |
Longitud de campo |
Resultado |
Caracteres truncados |
---|---|---|---|---|---|
x123x |
123 |
A |
5 |
"xAx" |
ninguno |
x123x |
123 |
ABC |
5 |
"xABCx" |
ninguno |
x123x |
123 |
ABCD |
5 |
"xABCD" |
"x" |
x123x |
123 |
ABCDE |
5 |
"xABCD" |
"x"; "E" |
x123x |
123 |
ABCDE |
6 |
"xABCDE" |
"x" |
x123x |
123 |
ABCDE |
7 |
"xABCDEx" |
ninguno |
Cómo evitar el truncamiento
Para evitar el truncamiento, utilice la función SUBSTR( ) para incrementar la longitud del campo, tal como se muestra en el segundo ejemplo a continuación.
Devuelve "xABCD", lo cual trunca el carácter de reemplazo "E" y el carácter "x" existente:
REGEXREPLACE("x123x";"123";"ABCDE")
Devuelve "xABCDEx", lo cual incluye todos los caracteres de reemplazo y los caracteres existentes que no se reemplazaron:
REGEXREPLACE(SUBSTR("x123x";1;10),"123";"ABCDE")
Metacaracteres de las expresiones regulares
La siguiente tabla incluye los metacaracteres que se pueden usar con REGEXFIND( ) y describe la operación que realiza cada uno de ellos.
Hay más sintaxis de expresiones regulares y Analytics trabaja con ella, pero esta sintaxis es más compleja. Sería imposible incluir una explicación completa de la sintaxis en esta guía. Puede encontrar varios recursos en los que se explican las expresiones regulares en Internet.
Analytics utiliza la implementación ECMAScript de expresiones regulares. La mayoría de las implementaciones de las expresiones regulares utilizan una sintaxis común.
Nota
La implementación actual de las expresiones regulares en Analytics no admite completamente la búsqueda en otros idiomas que no sean el inglés.
Metacarácter |
Descripción |
---|---|
. |
Coincide con cualquier carácter (excepto un carácter de línea nueva) |
? |
Busca una coincidencia de 0 o 1 aparición del elemento, metacarácter o literal inmediatamente anterior |
* |
Busca una coincidencia de 0 o más apariciones del elemento, metacarácter o literal inmediatamente anterior |
+ |
Busca una coincidencia de 1 o más apariciones del elemento, metacarácter o literal inmediatamente anterior |
{} |
Busca una coincidencia de la cantidad especificada de apariciones del elemento, metacarácter o literal inmediatamente anterior Puede especificar un número exacto, un rango o un rango abierto. Por ejemplo:
|
[] |
Coincide con cualquier carácter único que se encuentre dentro de los corchetes Por ejemplo:
|
() |
Crea un grupo que define una secuencia o un bloque de caracteres, que pueden ser tratados como una misma unidad. Por ejemplo:
|
\ |
Un carácter de escape que especifica que el carácter siguiente es un literal. Utilice el carácter de escape si desea hacer coincidir literalmente cualquiera de los metacaracteres. Por ejemplo, \( encuentra un paréntesis de apertura y \\ encuentra una barra invertida. Utilice el carácter de escape si desea hacer coincidir literalmente cualquiera de los siguientes caracteres: ^ $ . * + ? = ! : | \ ( ) [ ] { } Otros caracteres de puntuación, como & o @, no requieren el carácter de escape. |
\int |
Especifica que un grupo, anteriormente definido como paréntesis ( ), se repite. int es un número entero que identifica la posición secuencial del grupo previamente definido en relación con cualquier otro grupo. Este metacarácter se puede utilizar en el parámetro patrón tanto en REGEXFIND( ) como en REGEXREPLACE( ). Por ejemplo:
|
$int |
Especifica que un grupo que se encuentra en una cadena de destino se utiliza en una cadena de reemplazo. int es un número entero que identifica la posición secuencial del grupo en la cadena de destino respecto de otros grupos. Este metacarácter se puede utilizar únicamente en el parámetro cadena_nueva en REGEXREPLACE( ). Por ejemplo:
|
| |
Coincide con el carácter, el bloque de caracteres o la expresión que se encuentra antes o después del separador (|) Por ejemplo:
|
\w |
Coincide con cualquier carácter (a a la z, A a la Z, 0 a 9 y el carácter de guion bajo _ ) |
\W |
Coincide con cualquier carácter que no sea de palabra (que no sea a a la z, A a la Z, 0 a 9 o el carácter de guion bajo _ ) |
\d |
Coincide con cualquier número (cualquier dígito decimal) |
\D |
Coincide con cualquier carácter no numérico (cualquier carácter que no sea un dígito decimal) |
\s |
Coincide con un espacio (un espacio en blanco) |
\S |
Coincide con cualquier carácter que no esté en blanco |
\b |
Coincide con el límite de una palabra (entre caracteres \w y \W) Los límites de las palabras no ocupan un espacio. Por ejemplo:
Consejo Además de los espacios, los límites entre las palabras pueden derivar de comas, puntos u otros caracteres que no sean palabras. Por ejemplo, la siguiente expresión se evalúa como Verdadera: REGEXFIND("jsmith@example.net"; "\bexample\b") |
^ |
Coincide con el inicio de una cadena Dentro de los corchetes [ ], ^ niega el contenido |
$ |
Coincide con el final de una cadena |
Funciones relacionadas
Si desea buscar patrones coincidentes sin reemplazarlos, utilice la Función REGEXFIND( ).