regex

Utilizzare il comando regex per filtrare i dati in base a un'espressione regolare specificata.

Sintassi

Nota

I comandi di elaborazione delle stringhe, ad esempio regex, richiedono più risorse. A causa di ciò, l'esecuzione del comando regex su un numero elevato di record di log o su valori di campo di grandi dimensioni non è consigliata. Estrarre invece questi valori utilizzando le definizioni campi estesi (EFD) o le etichette nell'origine log.

Per scrivere query regex performant, fare riferimento alla sintassi RE2J in Implementazione Java di RE2.

regex <field> [=|!= <regular expression>] | [IN | NOT IN (<regular expression> [(,<regular expression>)*])]

Parametri

La tabella seguente elenca i parametri utilizzati in questo comando e le relative descrizioni.

Parametro descrizione;

field

Specificare il campo da analizzare.

regular expression

Specificare l'espressione regolare.

Considerare 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 Risultati 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

slc07ptt:8452

Per rilevare zero o una corrispondenza utilizzando il carattere jolly ? * | regex 'entity' = 'slc07ptt?'|distinct entity slc07ptt
Per specificare i risultati minimo e massimo della query * | regex 'entity' = 'slc07p{1,2}'|distinct entity slc07ptt

slc07ptt:8452

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 intervallo <> * | regex 'entity' = 's.*<1-43>.*'|distinct entity stuyb43

stuyb43:1831

Per unire due modelli in modo che corrispondano a entrambi, utilizzare l'opzione di intersezione & * | regex 'entity' = '.*43&.*tu.'|distinct entity stuyb43

stuyb43:1831

Per trovare una corrispondenza con qualsiasi stringa nella sua interezza utilizzando l'opzione @ * | regex 'entity' = '@'|distinct entity slc07cuc

slc07ptt

slc07ptt:8452

stuyb43

stuyb43:1831

Per trovare i record filtrando le opzioni specifiche utilizzando il carattere diverso != * | regex 'entity' = 'slc07.+'|distinct entity stuyb43

stuyb43:1831

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

slc07ptt

stuyb43

Per specificare più query regex * | regex 'entity' = '[^1]+' | regex 'entity' = '[^5]+' |distinct entity slc07cuc

slc07ptt

stuyb43

Per trovare i record specificando la classe di caratteri che nega la presenza dei caratteri da 1 a 6, utilizzare l'opzione ^ * | regex 'entity' = 'slc0[^1-6].*' |distinct entity slc07cuc

slc07ptt

Per trovare i record specificando la classe di caratteri per la presenza dei caratteri da 3 a 8 * | regex 'entity' = 'slc0[3-8].*' |distinct entity slc07cuc

slc07ptt

Per trovare i record specificando la classe di caratteri per la presenza dei caratteri 1 o 2 * | regex 'entity' = 's.*[12].*'|distinct entity slc07ptt:8452

stuyb43:1831