Función REGEXFIND( )

Devuelve un valor lógico que indica si el patrón que se especificó con una expresión regular aparece en una cadena.

Sintaxis

REGEXFIND(cadena; patrón)

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.

Salida

Lógico. Devuelve T (verdadero) si se encuentra el valor de patrón especificado y F (falso) en caso contrario.

Ejemplos

Ejemplos básicos

Patrones de caracteres alfabéticos

Devuelve T para todos los registros que contienen “Phoenix”, “Austin” o “Los Angeles” en el campo Ciudad_proveedor. De lo contrario, devuelve F:

REGEXFIND(Ciudad_proveedor; "Phoenix|Austin|Los Angeles")

Regresa T para todos los apellidos que comienzan con "John" o "Jon". Por ejemplo: John, Jon, Johnson, Johnston, Jonson, Jonston, Jones, etc. De lo contrario, devuelve F:

REGEXFIND(Apellido;"^Joh?n")

Regresa T únicamente para los apellidos que son "John" o "Jon". De lo contrario, devuelve F:

REGEXFIND(Apellido;"^Joh?n\b")

Patrones de carácter numérico

Regresa T para todos los registros con números de factura que contienen "98". De lo contrario, devuelve F:

REGEXFIND(Número_factura; "98")

Regresa T para todos los registros con números de factura que comienzan con "98". De lo contrario, devuelve F:

REGEXFIND(Número_factura; "\b98")

Regresa T para todos los registros con números de factura que finalizan con "98". De lo contrario, devuelve F:

REGEXFIND(Número_factura; "98\b")

Regresa T para todos los registros con números de factura que contienen “98” en la 5° y 6° posición. De lo contrario, devuelve F:

REGEXFIND(Número_factura; "\b\d\d\d\d98")
REGEXFIND(Número_factura; "\b\d{4}98")

Patrones de caracteres combinados

Regresa T para todos los registros con códigos de producto que comienzan con 3 números, seguidos de un guion y 6 letras. De lo contrario, devuelve F:

REGEXFIND(Código_producto; "\b\d{3}-[a-zA-Z]{6}\b")

Regresa T para todos los registros con códigos de producto que comienzan con 3 o más números, seguidos de un guion y 6 o más letras. De lo contrario, devuelve F:

REGEXFIND(Código_producto; "\b\d{3,}-[a-zA-Z]{6}")

Regresa T para todos los registros con identificadores de factura alfanuméricos que contienen “98” en la 5° y 6° posición. De lo contrario, devuelve F:

REGEXFIND(Número_factura; "\b\w{4}98")

Regresa T para todos los registros con identificadores de factura que contienen las siguientes condiciones; de lo contrario, devuelve F:

  • cualquier carácter en las primeras cuatro posiciones
  • "98" en la 5° y 6° posición
REGEXFIND(Número_factura; "\b.{4}98")

Regresa T para todos los registros con identificadores de factura que contienen “98” después de 1 a 4 caracteres iniciales. De lo contrario, devuelve F:

REGEXFIND(Número_factura; "\b.{1,4}98")

Regresa 'T' para todos los registros con identificadores de factura que contienen la totalidad de las siguientes condiciones; de lo contrario, devuelve F:

  • cualquier carácter en las tres primeras posiciones
  • "5" o "6" en la cuarta posición
  • "98" en la 5° y 6° posición
REGEXFIND(Número_factura; "\b.{3}[56]98")

Regresa T para todos los registros con identificadores de factura que contienen la totalidad de las siguientes condiciones; de lo contrario, devuelve F:

  • cualquier carácter en las dos primeras posiciones
  • "55" o "56" en la tercera y cuarta posición
  • "98" en la 5° y 6° posición
REGEXFIND(Número_factura; "\b.{2}(55|56)98")

Observaciones

Cómo funciona

La función REGEXFIND( ) utiliza una expresión regular para buscar datos en Analytics.

Las expresiones regulares son cadenas de búsqueda potentes y flexibles que combinan caracteres literales y metacaracteres, que son caracteres especiales que realizan una variedad de operaciones de búsqueda.

Por ejemplo:

REGEXFIND(Apellido;"Sm(i|y)the{0,1}")

utiliza los metacaracteres de grupo ( ), alternancia | y cuantificador { } para crear una expresión regular que encuentra “Smith”, “Smyth”, “Smithe” o “Smythe” en el campo Apellido.

La coincidencia se realiza de manera secuencial

La coincidencia entre valores cadena y patrón se realiza de manera secuencial. En el ejemplo anterior:

  • "S" se compara con la primera posición del campo Apellido
  • "m" se compara con la segunda posición
  • "i" e "y" se comparan con la tercera posición
  • "t" se compara con la cuarta posición
  • "h" se compara con la quinta posición
  • "e" se compara contra la sexta posición, si hay una sexta posición en el valor de origen

Cuándo utilizar REGEXFIND( )

Utilice REGEXFIND( ) para buscar datos utilizando una coincidencia de patrón simple o compleja.

La construcción de expresiones regulares puede ser complicada, en especial si recién se familiariza con la sintaxis. Tal vez pueda lograr sus objetivos de búsqueda con funciones de búsqueda más sencillas de Analytics, como FIND( ), MATCH( ) o MAP( ).

Si sus necesidades de búsqueda superan las capacidades de estas funciones más sencillas, las expresiones regulares le ofrecen una flexibilidad prácticamente ilimitada para construir cadenas de búsqueda.

Cómo maneja los espacios REGEXFIND( )

Los espacios (en blanco) se consideran caracteres tanto en la cadena como en el patrón; por lo tanto, debe tener cuidado al trabajar con espacios.

En el patrón, puede indicar un espacio literalmente (escribiendo un espacio) o utilizando el metacarácter \s. El uso del metacarácter facilita la lectura de los espacios en el patrón y, por lo tanto, hace que resulte menos probable pasarlos por alto, en especial al construir patrones más complejos.

Concatenar campos

Puede concatenar dos o más campos en la cadena si desea buscar en varios campos de manera simultánea.

Por ejemplo:

REGEXFIND(Nombre_proveedor+Calle_proveedor;"Hardware.*Main")

busca las palabras "Hardware" y "Main" tanto en el campo Nombre_proveedor como en el campo Calle_proveedor, ya sea juntas o separadas por caracteres.

Un negocio que incluya la palabra "Hardware" en el nombre, ubicado en la calle "Main" coincidiría con esta expresión regular. Y lo mismo ocurre con un negocio denominado “Hardware on Main”.

Los campos concatenados se tratan como un único campo que incluye los espacios al principio y al final de los campos individuales, a menos que utilice la función ALLTRIM( ) para quitar los espacios.

El orden de los campos concatenados es importante

Como REGEXFIND( ) busca los caracteres en el patrón en el orden en el que usted los especifica, el orden en el que concatena los campos tiene un efecto. Si invierte Nombre_proveedor y Calle_proveedor en la expresión anterior, tendrá menos probabilidades de obtener resultados.

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 y reemplazar patrones coincidente utilice Función REGEXREPLACE( ).

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