Ulteriori informazioni su Data Workbench Annuncio di fine vita.
Le espressioni regolari vengono utilizzate in tutti i campi di ricerca di Data Workbench, compresi i pannelli entità query.
Un’espressione regolare è un pattern di testo, costituito da una combinazione di caratteri alfanumerici e caratteri speciali noti come metacaratteri, che individua i pattern ed estrae le sottostringhe dal testo. Le espressioni regolari sono ampiamente utilizzate nella programmazione informatica e sono parte integrante di lingue come Perl.
Per identificare ed estrarre pattern di stringa complessi, il server di Data Workbench utilizza espressioni regolari in alcune delle trasformazioni e condizioni. Di seguito è riportata una breve guida alle espressioni regolari.
Questa appendice non è un’introduzione completa alle espressioni regolari. Un riferimento particolarmente valido è la pubblicazione O'Reilly Espressioni regolari di masterizzazione, 2a edizione di Jeffrey E. F. Friedl.
Termine | Definizione |
---|---|
Letterale | Un letterale è un carattere utilizzato in un’espressione regolare per individuare una sequenza specifica di caratteri. Ad esempio, per trovare il prodotto in shop/products.html, il prodotto stringa è letterale, o quello che stiamo letteralmente cercando nella stringa. |
Metacarattero | Un metacarattero è un carattere speciale che ha un'interpretazione univoca nel contesto delle espressioni regolari. Ad esempio, il punto (.) è un metacarattero utilizzato per associare qualsiasi carattere. |
Sequenza di escape | Una sequenza di escape è semplicemente un modo per dire al motore di espressione regolare che vorremmo utilizzare uno dei metacaratteri come letterale. Le sequenze di escape iniziano sempre con il carattere barra rovesciata (\ ). Posizionando la barra rovesciata (che è anche un metacarattero) davanti a un metacarattero, il motore di espressione regolare interpreta il metacarattero evitato come un letterale. Ad esempio, se desideri ottenere una corrispondenza con il periodo del metacarattero (. ), è necessario utilizzare una sequenza di escape. Tuttavia, per corrispondere a uno dei periodi della stringa 168.196.0.11, puoi utilizzare l’espressione regolare costituita da una barra inversa e un punto (\. ). |
Pattern | Terminologia abbreviata per l'espressione regolare. In sostanza, un'espressione regolare è un pattern a cui si sta tentando di corrispondere rispetto alla stringa di destinazione. |
Stringa di destinazione | Questo termine si riferisce alla stringa in cui si sta cercando per individuare il pattern desiderato. |
La corrispondenza letterale prende una stringa letterale senza caratteri di escape e cerca nella stringa di destinazione per vedere se si tratta di una sottostringa della stringa di destinazione.
In questo esempio viene illustrato il funzionamento della corrispondenza letterale. Considera una situazione in cui i dati vengono raccolti dal traffico del sito web e il campo cs(referrer) contiene il seguente valore:
https://www.abc.com/adventurenews/today.html?ad=123AZ45
Per determinare se il referente rappresenta un utente che ha fatto clic su uno degli annunci pubblicitari, è necessario vedere se il referrer contiene l'annuncio stringa. Puoi semplicemente utilizzare la stringa letterale annuncio per cercare la stringa di destinazione e determinare se un annuncio è stato utilizzato per indirizzare il traffico al sito. Anche se questo corrisponderebbe alla stringa di destinazione, corrisponderebbe in due posizioni ed è quindi ambiguo e può portare a falsi positivi.
Il seguente URL contiene la stringa annuncio in due posizioni diverse:
https://www.abc.com/ad vertnews/today.html?ad =123AZ45
Pertanto, se cerchi di determinare quali sessioni sono iniziate a seguito di una particolare campagna pubblicitaria, è chiaro che non è sufficiente utilizzare semplicemente l’annuncio letterale come espressione regolare. Modificando il valore letterale in "ad=" si eliminerebbe questa ambiguità e si otterrebbe una sola corrispondenza nell’espressione. Tuttavia, anche questo potrebbe non essere sufficiente per garantire che il referrer facesse parte della campagna pubblicitaria. Considera il referente seguente:
https://www.xyz.com/hello.html?pad=something
Non hai alcun controllo sugli URL che altri utenti potrebbero utilizzare per creare collegamenti al sito. La corrispondenza letterale è un meccanismo troppo semplice per individuare le sessioni iniziate a seguito della campagna pubblicitaria. La sezione seguente illustra come utilizzare i metacaratteri per ottenere una corrispondenza più flessibile e potente.
Un metacarattero è un carattere speciale in un programma o in un campo di dati che fornisce informazioni su altri caratteri.
metacarattero | descrizione |
---|---|
. (punto) | Corrisponde a un singolo carattere, ad esempio: re:x.z corrisponde a "xyz" o "xxz". |
* (stella) | Corrisponde a uno o più caratteri, ad esempio: re:Z* corrisponde a "ZZZ". |
? (carattere jolly) | Corrisponde a 0 o 1 dell'espressione precedente per forzare la corrispondenza minima, ad esempio: xy?z corrisponde a "xy" e "xyz". |
È inoltre possibile utilizzare espressioni regolari comuni aggiuntive per creare stringhe di ricerca più complesse.
Elenchi, intervalli e OR
La corrispondenza letterale consente di cercare una singola stringa, ma parentesi graffe, trattini e tubi consentono di definire un elenco di elementi da cercare nella stringa di destinazione.
Per questo metacarattero... | Il processore di espressioni regolari.. |
---|---|
Parentesi quadrate ([ ]) | Associa uno qualsiasi dei caratteri all’interno della parentesi con una posizione di un singolo carattere. Ad esempio, [AB] è un'istruzione che deve corrispondere alla lettera A o alla lettera B e [0123456789] indica che deve corrispondere a qualsiasi carattere compreso tra 0 e 9. |
Trattino (-) | Associa un intervallo di caratteri. Così, invece di scrivere [0123456789], potevamo semplicemente scrivere [0-9]. Può essere esteso a intervalli di caratteri e a intervalli multipli all’interno di un set di parentesi. Ad esempio, [0-9A-C] corrisponde ai caratteri da 0 a 9 e da A a C.
Nota: Per verificare che un trattino (-) sia un letterale all'interno delle parentesi, deve essere primo o ultimo. Ad esempio, test [-0-9] per - e da 0 a 9. |
Barra verticale (|) | Associa una delle due scelte a una stringa di destinazione specificata. Ad esempio, b|nat corrisponde a bat o nat. |
Prendi in considerazione gli esempi seguenti:
Pattern | Stringa | Corrispondenza |
---|---|---|
Win9[58] |
OS=Win95 | Win95 |
Win95 | 8 | OS=Win98 |
[0-9] |
Mozilla/3.0 | 3 |
Lezione[A-Z] |
Lezione a | Nessuna corrispondenza perché il carattere a in minuscolo non è compreso nell'intervallo tra A e Z in maiuscolo. |
Negazione
La negazione è un modo per dire che si desidera abbinare qualsiasi cosa tranne i caratteri specificati. Il metacarattero di negazione, la cirflex o il caret (^
), viene utilizzato come primo carattere tra parentesi per specificare che la corrispondenza deve essere qualsiasi cosa tranne i caratteri rimanenti tra parentesi. Ad esempio, per far corrispondere qualsiasi carattere tranne un punto e virgola (;
), scrivereste
[^;
]
Questo corrisponde a qualsiasi carattere tranne il punto e virgola.
Posizionamento
Per forzare una corrispondenza all’inizio o alla fine di una stringa di destinazione, vengono utilizzati uno dei due metacaratteri.
Per questo metacarattero… | Il processore di espressioni regolari… |
---|---|
Circumflex o Carrello (^ ) |
Confronta con l'inizio della stringa. Ad esempio, ^[Tt] corrisponderebbe alla stringa di destinazione "L'inizio" ma non corrisponde a "Questo è l'inizio". |
Simbolo del dollaro ($ ) |
Confronta con la fine della stringa. Ad esempio: [Ee] E$ corrisponderebbe a "This is the end" ma non corrisponderebbe a "The end is a special time". |
Quando l'espressione regolare contiene ^ all'inizio e $ alla fine, l'intera stringa di destinazione deve corrispondere all'espressione regolare.
Corrispondenza a qualsiasi elemento
Il periodo (.) è un metacarattero speciale che corrisponde a qualsiasi carattere nella stringa di destinazione. Ad esempio, l’espressione regolare ^…$
corrisponde a qualsiasi stringa di destinazione con una lunghezza di esattamente tre caratteri. L'espressione regolare "…" corrisponde a qualsiasi stringa di destinazione che contiene almeno tre caratteri.
Pattern ripetuti
I metacaratteri di iterazione consentono di associare un pattern più di una volta.
Per questo metacarattero... | Il processore di espressioni regolari.. |
---|---|
Punto interrogativo (?) | Non associare alcuna istanza o istanza del carattere immediatamente precedente il metacarattero (?). Ad esempio, l'area del pattern?d corrisponde al rosso e alla lettura. |
Asterisco (*) | Corrispondenza a zero o più occorrenze del carattere immediatamente precedente il metacarattero (*). Ad esempio, il pattern [0-9]* corrisponde a qualsiasi numero di caratteri da 0 a 9 (qualsiasi numero intero). |
Plus (+) | Corrispondere a una o più occorrenze del carattere o dell'intervallo precedente. Ad esempio, il pattern thre+ corrisponde a tre ma non a. |
{n} | Corrispondere esattamente n volte al carattere o all'intervallo di procedimento. Il seguente pattern corrisponde ai numeri di telefono degli Stati Uniti: Sebbene non sia un pattern ottimale, determina se la stringa di destinazione è nel formato corretto. |
{n,m} | Corrispondere al carattere precedente almeno n volte e al massimo m volte. Ad esempio, per{1,2}d corrisponderebbe a alimenti e alimenti ma non a alimenti. |
La corrispondenza dei pattern è solo una parte della potenza delle espressioni regolari. Le espressioni regolari forniscono inoltre un meccanismo per l'estrazione di parti chiave di una stringa di destinazione. Questo viene fatto utilizzando le parentesi sinistra e destra. Queste estrazioni vengono generalmente utilizzate come input in un altro processo e sono accessibili tramite l'uso di %position%, dove position è un numero intero che fa riferimento al numero di cui è stata confrontata l’insieme di parentesi.
Prendi in considerazione i seguenti esempi di estrazione del pattern:
Pattern | Stringa | Corrispondenza | Estrazione |
---|---|---|---|
Win(9[58]) | OS=Win95 | Win95 | %1% = 95 |
(Win)(95|8) | OS=Win98 | Win98 | %1% = Win %2% = 98 |
Mozilla/([0-9]).([0-9]) | Mozilla/3.0 | Mozilla/3,03 | %1% = 3 %2% = 0 |
Lezione([A-Z]) | Lezione a | Nessuna corrispondenza perché la A in minuscolo non è compresa nell'intervallo tra A in maiuscolo e Z |