IndexRegEx - fonction de script et fonction de graphique
IndexRegEx() effectue une recherche dans la chaîne d'entrée et renvoie la position de départ de la énième occurrence du modèle d'expression régulière spécifié. Un troisième argument facultatif count fournit la valeur de n, qui est égale à 1 s'il est omis. Les positions dans la chaîne sont numérotées de gauche à droite à partir de 1. Si aucune correspondance n'est trouvée, la fonction renvoie 0.
Cette fonction effectue des opérations de regex sensibles à la casse. Sinon, vous pouvez utiliser la variante IndexRegExI() pour effectuer des opérations de regex non sensibles à la casse.
IndexRegEx
(text, regex [, count])
entier
Arguments
Argument
Description
text
Texte de chaîne d'entrée dans lequel rechercher une expression régulière.
regex
Expression régulière à utiliser pour la recherche dans la chaîne d'entrée.
count
Numéro de la correspondance. Cela s'avère utile lorsqu'il est possible de trouver plusieurs correspondances pour l'expression régulière dans le texte. Par exemple, spécifiez une valeur 4 pour extraire la position de la quatrième correspondance.
Cet argument est facultatif. S'il n'est pas spécifié, la valeur par défaut est 1. Vous pouvez spécifier une valeur négative pour rechercher des correspondances de droite à gauche.
Exemples de fonction
Exemple
Résultat
IndexRegEx('abc123','[a-z][0-9]+')
Renvoie 3 (la position de départ de la première correspondance).
IndexRegEx('abc123','[a-z][0-9]+',2)
Renvoie 0 (la regex n'a pas de deuxième correspondance).
IndexRegEx('ABC123','[a-z][0-9]+')
Renvoie 0, car IndexRegEx() est sensible à la casse.
IndexRegExI('ABC123','[a-z][0-9]+')
Renvoie 3. La variante non sensible à la casse de la fonction, IndexRegExI(), est utilisée.
Cas d'utilisation
Les cas d'utilisation de cette fonction sont les suivants :
Identification de l'endroit où se trouvent des modèles de texte spécifiques dans des corps de texte plus volumineux. Par exemple, vous pourriez vouloir savoir où un modèle d'adresse e-mail est utilisé dans une série de longs messages e-mail.
IndexRegEx() s'avère particulièrement utile pour le traitement de données avancé et est couramment utilisé dans la première étape d'une transformation plus longue et plus complexe. Il est généralement plus facile de résoudre les problèmes avec d'autres fonctions de regex telles que ExtractRegEx(), MatchRegEx() et CountRegEx(), mais il peut arriver que IndexRegEx() offre des solutions que ces fonctions ne peuvent pas fournir.
Exemple 1 – Script de chargement permettant d'identifier des livres par ISBN
Vue d'ensemble
Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à un nouvel onglet.
Le script de chargement contient :
Tableau ISBN comportant le contenu de message e-mail dans un champ nommé EmailBody.
Nous voulons trouver les positions de tous les codes ISBN de 13 chiffres à partir du langage naturel du message e-mail.
Script de chargement
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/';
Résultats
Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :
ISBNCode1
ISBNCode2
ISBNCode3
Tableau de résultats
ISBNCode1
ISBNCode2
ISBNCode3
301
487
588
Exemple 2 – Expression de graphique permettant d'identifier les contacts ayant des numéros de téléphone secondaires
Vue d'ensemble
Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à un nouvel onglet.
Le script de chargement contient :
Tableau nommé BusinessContactInfo qui contient des informations sur les entreprises trouvées sur le site Internet de chacune d'entre elles.
ContactInfo est un champ qui contient les numéros de téléphone d'entreprises. Nous voulons déterminer quelles sont les entreprises qui disposent de plusieurs numéros de téléphone.
Nos besoins :
Les numéros de téléphone doivent être des numéros de téléphone NANP de 10 chiffres.
Nous voulons permettre le placement entre parenthèse de l'indicatif régional.
Nous voulons autoriser un seul espace vide ou trait d'union entre chaque segment d'un numéro de téléphone.
Script de chargement
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');
Résultats
Chargez les données et ouvrez une feuille. Créez une table et ajoutez ce champ comme dimension :
Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – dites-nous comment nous améliorer !