IndexRegExGroup - funzione dello script e del grafico
IndexRegExGroup() effettua una ricerca nella stringa di input e restituisce la posizione iniziale dell'occorrenza n-esima del modello di espressione regolare composita specificato. Un quarto 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 IndexRegExGroupI() per eseguire operazioni regex senza distinzione tra maiuscole e minuscole.
Sintassi:
IndexRegExGroup
(text, regex, group [, 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.
group
Il numero del gruppo, nel caso di un'espressione regolare composita.
Un valore group pari a 0 restituisce l'indice dell'intera regex. Tuttavia, se l'espressione regolare deve restituire solo l'indice dell'intera corrispondenza, utilizzare invece la funzione IndexRegEx().
È possibile specificare un valore group negativo per cercare le corrispondenze da destra a sinistra.
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 cercare 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
IndexRegExGroup('abc123','([a-z])([0-9]+)',0)
Restituisce 3 (posizione iniziale della regex completa).
IndexRegExGroup('abc123','([a-z])([0-9]+)',1)
Restituisce 3 (posizione iniziale del primo gruppo).
IndexRegExGroup('abc123','([a-z])([0-9]+)',2)
Restituisce 4, che è la posizione iniziale del secondo gruppo. Nel modello regex di input, la stringa ([0-9]+) corrisponde al secondo gruppo.
IndexRegExGroup('ABC123','([a-z])([0-9]+)',1)
Restituisce 0, perché IndexRegExGroup() fa distinzione tra maiuscole e minuscole.
IndexRegExGroupI('ABC123','([a-z])([0-9]+)',1)
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 viene utilizzato il dominio di un indirizzo e-mail in una serie di lunghi messaggi e-mail.
La funzione IndexRegExGroup() è 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 ExtractRegExGroup(), MatchRegEx() e CountRegEx(), ma a volte IndexRegExGroup() offre soluzioni che queste funzioni non possono fornire.
Esempio 1 - script di caricamento per trovare le posizioni dei componenti ISBN
Panoramica
Aprire l'editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova scheda.
Lo script di caricamento contiene:
La creazione di una variabile, ISBN_RegEx, per memorizzare l'espressione regolare che si desidera utilizzare.
Un set di codici ISBN per i libri che una libreria vuole ordinare da diversi fornitori.
Per ogni codice ISBN, è necessario estrarre la posizione iniziale di ciascuno dei seguenti elementi:
EAN
Gruppo
Soggetto registrato
Pubblicazione
Checksum
Script di caricamento
SET ISBN_RegEx = 'ISBN[ ]*([0-9]{3})-([0-9]{1})-([0-9]{4})-([0-9]{4})-([0-9]{1})';
ISBN:
LOAD Supplier,
IndexRegExGroup(Books,'$(ISBN_RegEx)',1) AS EAN,
IndexRegExGroup(Books,'$(ISBN_RegEx)',2) AS Group,
IndexRegExGroup(Books,'$(ISBN_RegEx)',3) AS Registrant,
IndexRegExGroup(Books,'$(ISBN_RegEx)',4) AS Publication,
IndexRegExGroup(Books,'$(ISBN_RegEx)',5) AS Checksum;
// Split the ISBN with the Group function in a preceding load to avoid generating a cartesian product
LOAD *,
ExtractRegEx(SupplierBooks, '$(ISBN_RegEx)') AS Books
INLINE [
Supplier, SupplierBooks
Supplier 1, ISBN 123-3-1234-1234-0 ISBN 012-2-0123-0123-4 ISBN 000-1-0123-0123-2 ISBN 234-5-2345-2345-1 ISBN 555-2-5555-5555-3 ISBN 222-4-2222-2222-2
Supplier 2, ISBN 000-0-3333-3333-3 ISBN 333-3-3333-3333-3 ISBN 555-1-5151-5151-3 ISBN 232-1-2323-2323-1 ISBN 008-0-7777-7777-3 ISBN 888-0-9999-0000-0
];
Risultati
Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere tali campi come dimensioni:
Supplier
EAN
Group
Registrant
Publication
Checksum
Tabella dei risultati
Supplier
EAN
Group
Registrant
Publication
Checksum
Supplier 1
6
10
12
17
22
Supplier 1
6
10
12
17
22
Supplier 1
6
10
12
17
22
Supplier 1
6
10
12
17
22
Supplier 1
6
10
12
17
22
Supplier 1
6
10
12
17
22
Supplier 2
6
10
12
17
22
Supplier 2
6
10
12
17
22
Supplier 2
6
10
12
17
22
Supplier 2
6
10
12
17
22
Supplier 2
6
10
12
17
22
Supplier 2
6
10
12
17
22
In questo caso, ogni libro contiene componenti nelle stesse posizioni.
Esempio 2 - espressioni del grafico per trovare le posizioni dell'URL (con confronto con IndexRegEx() )
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 Correspondence, che contiene il testo del messaggio e-mail in un campo denominato EmailBody.
Contenuto del messaggio e-mail che contiene URL web.
Bisogna trovare la posizione del secondo URL, se presente, e le posizioni dei componenti seguenti:
Dominio
Percorso
Bisogna utilizzare un'unica espressione regolare per eseguire tutte le operazioni.
Script di caricamento
Correspondence:
Load * Inline `
ID EmailBody
1 Thanks again for this morning's meeting! You can find the meeting minutes posted here: https://example.com/resourceexample. If you still have any questions, always feel free to ask me or one of the other team members. Here are a few learning resources that might help you: http://www.example.ca/training1.pptx http://www.example.ca/training2.pptx http://www.example.ca/training3.pptx Thanks again!
2 Hi, you'll want to visit our company website for that, it's available at https://www.example.se.
3 Hello all, I just wanted to let you know that our online stores are now up and running! I couldn't be more excited. We are already seeing quite a bit of traffic and volume sold, which is very promising! For Product A, go to https://www.examplestore1.com/products. For Product B, you'll want go to https://www.examplestore2.com/products. Product C, go check out https://www.examplestore3.com/products. Cheers!
` (delimiter is '\t');
Risultati
Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere questo campo come dimensione:
IndexRegEx() restituisce la posizione iniziale dell'intero URL, mentre IndexRegExGroup() restituisce le posizioni iniziali di singole parti dell'URL, corrispondenti al valore group che è stato utilizzato. Il record con un valore per ID uguale a 2 contiene solo un URL, quindi vengono restituiti i valori 0.
La stessa espressione regolare viene utilizzata in tutte le espressioni dei grafici per restituire diverse informazioni. La scomposizione dei gruppi definiti nell'espressione regolare è la seguente.
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!