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:

  • a{3} coincide con "aaa"

  • X{0,2}L coincide con "L", "XL" y "XXL"

  • AB-\d{2,}-YZ coincide con cualquier identificador alfanumérico con el prefijo "AB-", el sufijo "-YZ" y dos o más números en el cuerpo del identificador

[]

Coincide con cualquier carácter único que se encuentre dentro de los corchetes

Por ejemplo:

  • [aeiou] coincide con a, o e, o i, u o, o u

  • [^aeiou] coincide con cualquier carácter que no sea a, o e, o i, u o, o u

  • [A-G] coincide con cualquier letra de la A a la G, en mayúscula

  • [A-Ga-g] coincide con cualquier letra mayúscula de la A a la G o con cualquier letra minúscula de la a a la g

  • [5-9] coincide con cualquier número del 5 al 9

()

Crea un grupo que define una secuencia o un bloque de caracteres, que pueden ser tratados como una misma unidad.

Por ejemplo:

  • S(ch)?mid?th? coincide con "Smith" o "Schmidt"

  • (56A.*){2} coincide con cualquier identificador alfanumérico en el que aparezca la secuencia "56A", al menos dos veces

  • (56A).*-.*\1 coincide con cualquier identificador alfanumérico en el que la secuencia "56A" aparezca al menos dos veces, con un guion entre dos de las apariciones

\

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:

  • (123).*\1 coincide con cualquier identificador en el que el grupo de dígitos "123" aparece dos veces, como mínimo

  • ^(\d{3}).*\1 coincide con cualquier identificador en el que los primeros 3 dígitos se repiten

  • ^(\d{3}).*\1.*\1 coincide con cualquier identificador en el cual los primeros 3 dígitos se repiten dos veces, como mínimo

  • ^(\D)(\d)-.*\2\1 coincide con cualquier identificador en el cual el prefijo alfanumérico se repite con los caracteres alfabéticos y numéricos invertidos

$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:

  • Si se utiliza el patrón (\d{3})[ -]?(\d{3})[ -]?(\d{4}) para buscar una coincidencia con una variedad de formatos de número de teléfono diferentes, se puede utilizar cadena_nueva ($1)-$2-$3 para reemplazar los números por sí mismos y estandarizar el formato. Tanto 999 123-4567 como 9991234567 se convierten en (999)-123-4567.

|

Coincide con el carácter, el bloque de caracteres o la expresión que se encuentra antes o después del separador (|)

Por ejemplo:

  • a|b coincide con a o con b

  • abc|def coincide con "abc" o "def"

  • Sm(i|y)th coincide con Smith o Smyth

  • [a-c]|[Q-S]|[x-z] coincide con cualquiera de estas letras: a, b, c, Q, R, S, x, y, z

  • \s|- coincide con un espacio o un guion

\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:

  • "United Equipment" tiene cuatro límites de palabras (uno a cada lado del espacio y uno al comienzo y al final de la cadena). "United Equipment" coincide con esta expresión regular \b\w*\b\W\b\w*\b

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( ).

Guía de creación de scripts de ACL 14.1