IndexRegEx() effettua una ricerca nella stringa di input e restituisce la posizione iniziale dell'occorrenza n-esima del modello di espressione regolare specificato. Un terzo argomento opzionale count fornisce il valore di n, che corrisponde a 1 se omesso. Le posizioni nella stringa sono numerate da sinistra a destra a partire dal valore 1 in poi. Se non viene trovata alcuna corrispondenza, la funzione restituisce 0.
Questa funzione esegue operazioni regex che distinguono tra maiuscole e minuscole. In alternativa, è possibile utilizzare la variante IndexRegExI() per eseguire operazioni regex senza distinzione tra maiuscole e minuscole.
Sintassi:
IndexRegEx
(text, regex [, count])
Tipo di dati restituiti: numero intero
Argomenti
Argomento
Descrizione
text
Il testo della stringa di input in cui si desidera cercare un'espressione regolare.
regex
L'espressione regolare da utilizzare per la ricerca della stringa di input.
count
Il numero della corrispondenza. Questo è utile quando nel testo si possono trovare più corrispondenze per l'espressione regolare. Per esempio, specificare il valore 4 per estrarre la posizione della quarta corrispondenza.
Questo argomento è facoltativo. Se non viene specificata, l'impostazione predefinita è 1. È possibile specificare un valore negativo per cercare le corrispondenze da destra a sinistra.
Esempi di funzioni
Esempio
Risultato
IndexRegEx('abc123','[a-z][0-9]+')
Restituisce 3 (la posizione iniziale della prima corrispondenza).
IndexRegEx('abc123','[a-z][0-9]+',2)
Restituisce 0 (la regex non ha una seconda corrispondenza).
IndexRegEx('ABC123','[a-z][0-9]+')
Restituisce 0, perché IndexRegEx() fa distinzione tra maiuscole e minuscole.
IndexRegExI('ABC123','[a-z][0-9]+')
Restituisce 3. Viene utilizzata la variante senza distinzione tra maiuscole e minuscole della funzione, IndexRegExI().
Casi d'uso
I casi d'uso di questa funzione includono:
Identificazione di dove si verificano modelli testuali specifici all'interno di corpi di testo più ampi. Ad esempio, potrebbe essere necessario sapere dove un modello di indirizzo e-mail viene utilizzato in una serie di lunghi messaggi e-mail.
La funzione IndexRegEx() è particolarmente utile per l'elaborazione avanzata dei dati e viene comunemente utilizzata nella prima fase di una trasformazione più lunga e complessa. In genere, è più facile risolvere i problemi con altre funzioni regex come ExtractRegEx(), MatchRegEx() e CountRegEx(), ma a volte IndexRegEx() offre soluzioni che queste funzioni non possono fornire.
Esempio 1 - script di caricamento per identificare i libri in base all'ISBN
Panoramica
Aprire l'editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova scheda.
Lo script di caricamento contiene:
La tabella ISBN, che include il contenuto di un messaggio e-mail in un campo denominato EmailBody.
Bisogna trovare le posizioni di tutti i codici ISBN a 13 cifre dal messaggio e-mail in linguaggio naturale.
Script di caricamento
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/';
Risultati
Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere tali campi come dimensioni:
ISBNCode1
ISBNCode2
ISBNCode3
Tabella dei risultati
ISBNCode1
ISBNCode2
ISBNCode3
301
487
588
Esempio 2 - espressione del grafico per identificare i contatti con numeri di telefono secondari
Panoramica
Aprire l'editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova scheda.
Lo script di caricamento contiene:
Una tabella denominata BusinessContactInfo, che contiene informazioni sulle aziende trovate sul sito web di ciascuna azienda.
ContactInfo è un campo che contiene i numeri di telefono dell'azienda. Bisogna determinare quali aziende hanno più numeri di telefono disponibili.
Requisiti:
I numeri di telefono devono seguire il sistema NANP (piano di numerazione nordamericano), con 10 cifre.
Bisogna consentire che il prefisso sia racchiuso tra parentesi.
Bisogna consentire la presenza di un singolo spazio vuoto o di un trattino tra ogni segmento di un numero di telefono.
Script di caricamento
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');
Risultati
Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere questo campo come dimensione:
CompanyName
Aggiungere la seguente dimensione calcolata alla tabella:
Se riscontri problemi con questa pagina o con il suo contenuto – un errore di battitura, un passaggio mancante o un errore tecnico – facci sapere come possiamo migliorare!