regex
Utilizzare il comando regex per filtrare i dati in base a un'espressione regolare specificata.
Sintassi
I comandi di elaborazione delle stringhe, ad esempio regex, richiedono molte risorse. Per questo motivo, l'esecuzione del comando regex su un numero elevato di record di log o su valori di campo elevati non è consigliabile. Estrarre questi valori utilizzando le definizioni di campo estese (EFD) o le etichette nell'origine log.
Per scrivere query regex performanti, fare riferimento alla sintassi RE2J all'indirizzo Implementazione Java di RE2.
regex <field> [=|!= <regular expression>] | [IN | NOT IN (<regular expression> [(,<regular expression>)*])]Parametri
Nella tabella seguente sono elencati i parametri utilizzati in questo comando, insieme alle relative descrizioni.
| Parametro | Descrizione |
|---|---|
|
|
Specificare il campo da analizzare. |
|
|
Specificare l'espressione regolare. |
Si consideri il seguente set di record di esempio che rappresentano i nomi delle entità per eseguire alcune query regex di esempio:
slc07cuc
slc07ptt
slc07ptt:8452
stuyb43
stuyb43:1831| Filtra requisito | Esempio di comando Regex | Risultato della ricerca |
|---|---|---|
Per rappresentare un singolo carattere utilizzando .
|
* | regex 'entity' = 'slc07ptt:845.'|distinct entity |
slc07ptt:8452 |
Per rilevare una o più corrispondenze utilizzando il carattere + |
* | regex 'entity' = 'slc07ptt.+'|distinct entity |
slc07ptt:8452 |
Per rilevare zero o più corrispondenze utilizzando il carattere * |
* | regex 'entity' = 'slc07ptt.*'|distinct entity |
slc07ptt
|
Per rilevare zero o una corrispondenza utilizzando il carattere jolly ? |
* | regex 'entity' = 'slc07ptt?'|distinct entity |
slc07ptt |
| Per specificare i risultati minimi e massimi della query | * | regex 'entity' = 'slc07p{1,2}'|distinct entity |
slc07ptt
|
| Per fornire opzioni alternative per un carattere specifico | * | regex 'entity' = 'slc07pt(T|t)'|distinct entity |
slc07ptt |
Per specificare un complemento utilizzando il carattere ~
|
* | regex 'entity' = 'slc~c'|distinct entity |
slc07cuc |
Per specificare un intervallo numerico utilizzando l'opzione di intervallo <> |
* | regex 'entity' = 's.*<1-43>.*'|distinct entity |
stuyb43
|
Per unire due pattern in modo che corrispondano entrambi, utilizzare l'opzione di intersezione & |
* | regex 'entity' = '.*43&.*tu.'|distinct entity |
stuyb43
|
Per trovare una corrispondenza completa con una stringa qualsiasi utilizzando l'opzione @
|
* | regex 'entity' = '@'|distinct entity |
slc07cuc
|
Per trovare i record, filtrare le opzioni specifiche utilizzando il carattere diverso != |
* | regex 'entity' = 'slc07.+'|distinct entity |
stuyb43
|
Per trovare i record che contengono i caratteri 2 e 5, specificare l'espressione booleana IN |
* | regex 'entity' in ('.*2.*', '.*5.*')|distinct entity |
slc07ptt:8452 |
Per trovare i record che non contengono i caratteri 1 e 2, specificare l'espressione booleana NOT IN |
* | regex 'entity' not in ('.*1.*', '.*2.*')|distinct entity |
slc07cuc
|
| Per specificare più query regex | * | regex 'entity' = '[^1]+' | regex 'entity' = '[^5]+' |distinct entity |
slc07cuc
|
Per trovare i record specificando la classe di caratteri che nega la presenza dei caratteri da 1 a 6 utilizzando l'opzione ^ |
* | regex 'entity' = 'slc0[^1-6].*' |distinct entity |
slc07cuc
|
Per trovare i record, specificare la classe di caratteri per la presenza dei caratteri da 3 a 8 |
* | regex 'entity' = 'slc0[3-8].*' |distinct entity |
slc07cuc
|
Per trovare i record, specificare la classe di caratteri per la presenza dei caratteri 1 o 2 |
* | regex 'entity' = 's.*[12].*'|distinct entity |
slc07ptt:8452
|