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

field

Specificare il campo da analizzare.

regular expression

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

slc07ptt:8452

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

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

stuyb43:1831

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

stuyb43:1831

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

slc07ptt

slc07ptt:8452

stuyb43

stuyb43:1831

Per trovare i record, filtrare 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 utilizzando l'opzione ^ * | regex 'entity' = 'slc0[^1-6].*' |distinct entity slc07cuc

slc07ptt

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

slc07ptt

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

stuyb43:1831