IndexRegEx() busca en la cadena de entrada y devuelve la posición inicial de la enésima instancia del patrón de expresión regular especificado. Un tercer argumento opcional count proporciona el valor de n, que es 1 si se omite. Las posiciones de la cadena se numeran de izquierda a derecha, de 1 en adelante. Si no se encuentra ninguna coincidencia, la función devuelve 0.
Esta función realiza operaciones regex que distinguen entre mayúsculas y minúsculas. Puede utilizar alternativamente la variante IndexRegExI() para realizar operaciones regex sin distinguir mayúsculas de minúsculas.
Sintaxis:
IndexRegEx
(text, regex [, count])
Tipo de datos que devuelve: Entero
Argumentos
Argumento
Descripción
text
El texto de la cadena de entrada en la que desea buscar una expresión regular.
regex
La expresión regular que se utilizará para buscar la cadena de entrada.
count
El número de la coincidencia. Esto resulta útil cuando en el texto pueden encontrarse múltiples coincidencias para la expresión regular. Por ejemplo, especifique un valor de 4 para extraer la posición de la cuarta coincidencia.
Se trata de un argumento opcional. Por defecto es 1 si no se especifica. Puede especificar un valor negativo para buscar coincidencias de derecha a izquierda.
Ejemplos de funciones
Ejemplo
Resultado
IndexRegEx('abc123','[a-z][0-9]+')
Devuelve 3 (la posición de inicio de la primera coincidencia).
IndexRegEx('abc123','[a-z][0-9]+',2)
Devuelve 0 (la regex no tiene una segunda coincidencia).
IndexRegEx('ABC123','[a-z][0-9]+')
Devuelve 0, porque IndexRegEx() distingue entre mayúsculas y minúsculas.
IndexRegExI('ABC123','[a-z][0-9]+')
Devuelve 3. Se utiliza la variante de la función que no distingue entre mayúsculas y minúsculas, IndexRegExI().
Cuándo se utiliza
Los casos de uso de esta función incluyen:
Identificar dónde se producen patrones textuales específicos dentro de cuerpos de texto más amplios. Por ejemplo, podría querer saber dónde se utiliza un patrón de dirección de correo electrónico en una serie de mensajes de correo electrónico largos.
IndexRegEx() es especialmente útil para el tratamiento avanzado de datos, y suele utilizarse en el primer paso de una transformación más larga y compleja. Normalmente es más fácil resolver los problemas con otras funciones regex como ExtractRegEx(), MatchRegEx(), y CountRegEx(), pero puede haber ocasiones en las que IndexRegEx() ofrezca soluciones que estas funciones no pueden proporcionar.
Ejemplo 1: script de carga para identificar libros por ISBN
Descripción
Abra el editor de carga de datos y agregue el script de carga a continuación a una nueva pestaña.
El script de carga contiene:
Una tabla de ISBN que contiene el contenido de los mensajes de correo electrónico en un campo denominado EmailBody.
Queremos encontrar las posiciones de todos los códigos ISBN de 13 dígitos a partir del lenguaje natural del mensaje de correo electrónico.
Script de carga
SET ISBN_RegEx = 'ISBN[ ]*([0-9]{3})-([0-9]{1})-([0-9]{4})-([0-9]{4})-([0-9]{1})';
ISBN:
LOAD IndexRegEx(EmailText,'$(ISBN_RegEx)',1) AS ISBNCode1,
IndexRegEx(EmailText,'$(ISBN_RegEx)',2) AS ISBNCode2,
IndexRegEx(EmailText,'$(ISBN_RegEx)',3) AS ISBNCode3,
* INLINE `
EmailText
Hi there! I have some books that I'm interested in ordering from your distribution center. Just wanted to make sure they were in stock before I put the order in on the system - do you think you could tell me whether you have these in stock, and how many you might be able to ship us? Thanks! Item 1: ISBN 123-3-1234-1234-0. This is one I've had a really hard time getting a hold of lately. Do you think you would have 5 in stock? If not, can I put a hold on the next 5 you get? Item 2: ISBN 012-2-0123-0123-4 ... This one is not high-priority, but if you have one, I'll take it! Item 3: ISBN 000-1-0123-0123-2. Customers have been requesting this one for a long time, and we haven't had it in stock for years due to it being out of print. Any chance you might have 7 of them? Thanks!
` (delimiter is '/t/';
Resultados
Cargue los datos y abra una hoja. Cree una nueva tabla y agregue estos campos como dimensiones:
ISBNCode1
ISBNCode2
ISBNCode3
Tabla de resultados
ISBNCode1
ISBNCode2
ISBNCode3
301
487
588
Ejemplo 2: expresión de gráfico para identificar contactos con números de teléfono secundarios
Descripción
Abra el editor de carga de datos y agregue el script de carga a continuación a una nueva pestaña.
El script de carga contiene:
Una tabla denominada BusinessContactInfo, que contiene información sobre las empresas que se encontró en el sitio web de cada una de ellas.
ContactInfo es un campo que contiene números de teléfono de empresas. Queremos determinar qué empresas disponen de varios números de teléfono.
Nuestros requisitos:
Los números de teléfono deben ser números de teléfono NANP con 10 dígitos.
Queremos permitir que el prefijo figure entre paréntesis.
Queremos permitir un único espacio en blanco o guión entre cada segmento de un número de teléfono.
Script de carga
BusinessContactInfo:
Load * Inline `
ID CompanyName ContactInfo
1 Company A (123) 456-7890 (023) 123-4567
2 Company B 0123456790 1357913579 0246802468
3 Company C 234-567-8901
` (delimiter is '\t');
Resultados
Cargue los datos y abra una hoja. Cree una nueva tabla y agregue este campo como dimensión:
Company A tiene un número de teléfono secundario. Company B tiene dos números de teléfono secundarios. Company C tiene tres números de teléfono secundarios.
Nota informativaLa función MatchRegEx() también es útil para este tipo de casos de uso de la validación.
No dude en indicarnos en qué podemos mejorar si encuentra algún problema en esta página o su contenido, como, por ejemplo, errores tipográficos, pasos que falta o errores técnicos.