Todos os produtos
Search
Central de documentação

Simple Log Service:Expressões regulares

Última atualização: Jul 03, 2026

Saiba como a transformação de dados do SLS lida com correspondência de expressões regulares, escape de caracteres e agrupamento.

Correspondência completa

A correspondência completa exige que a expressão regular corresponda a toda a string. Por exemplo, \d+ corresponde completamente à string 1234.

Algumas funções aceitam correspondências parciais. Para impor uma correspondência completa, adicione ^ no início e $ no final. Exemplo: ^expressão regular$. A sintaxe completa de regex está documentada na referência Operações de expressão regular do Python.

A tabela a seguir mostra o modo de correspondência de cada função.

Categoria

Função

Modo de correspondência

Funções de operação global

e_regex

Correspondência parcial

e_keep_fields

Correspondência completa

e_drop_fields

Correspondência completa

e_rename

Correspondência completa

e_kv

Correspondência parcial

Funções de expressão

e_match

Controlado por parâmetro. Padrão: correspondência completa.

e_search

Correspondência parcial

regex_select

Correspondência parcial

regex_findall

Correspondência parcial

regex_match

Controlado por parâmetro. Padrão: correspondência parcial.

regex_replace

Correspondência parcial

regex_split

Correspondência parcial

Exemplos de modos de correspondência:

  • regex_match("abc123", r"\d+"): Há correspondência (parcial por padrão).

  • regex_match("abc123", r"\d+", full=True): Sem correspondência (correspondência completa ativada).

  • regex_match("abc123", r"^\d+$"): Sem correspondência. Equivale ao modo de correspondência completa.

  • e_search(r'status~="\d+"'): Corresponde ao valor do campo status. Equivale ao modo de correspondência parcial.

  • e_search(r'status~="^\d+$"'): Corresponde ao valor do campo status. Equivale ao modo de correspondência completa.

Escape de caracteres

Expressões regulares contêm caracteres especiais. Para correspondê-los literalmente, use um dos métodos de escape abaixo:

  • Use uma barra invertida (\) para fazer o escape.

    O tópico Escape de caracteres aborda a sintaxe completa.

  • Use a função str_regex_escape.

    • Por exemplo, e_drop_fields(str_regex_escape("abc.test")) remove o campo abc.test.

    • e_drop_fields("abc.test") remove campos correspondentes a abc?test, em que o ponto de interrogação (?) representa qualquer caractere único.

Agrupamento

Os parênteses () agrupam expressões para repetição ou retroreferência. O exemplo a seguir ilustra a diferença:

"""
Log before processing:
SourceIP: 192.0.2.1
Log after processing:
SourceIP: 192.0.2.1
ip: 192.0.2.1
"""
# No group:
e_regex("SourceIP",r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}","ip")
# With group:
e_regex("SourceIP", "\d{1,3}(.\d{1,3}){3}", "ip")

Grupos de captura

Um grupo de captura armazena a correspondência para uso posterior em retroreferências. Qualquer grupo cujos parênteses () não comecem com ?: é considerado um grupo de captura.

A numeração dos grupos de captura começa em 1, da esquerda para a direita, conforme a posição do parêntese de abertura. A expressão abaixo, por exemplo, possui três grupos:

(\d{4})-(\d{2}-(\d{2}))

1     1 2      3     32

Quando uma regex contém grupos de captura padrão e nomeados, os grupos padrão são numerados primeiro, seguidos pelos nomeados. O SLS permite referenciar grupos nomeados diretamente pelo nome em expressões ou programas.

Grupos sem captura

Um grupo sem captura não armazena a correspondência. Grupos cujos parênteses () começam com ?: são classificados como sem captura.

Para corresponder a program ou project, use pro(gram|ject). Caso não seja necessário armazenar a correspondência em cache, prefira a forma sem captura pro(?:gram|ject).

Nota

A construção (?:x) corresponde a x sem armazenar o resultado em cache, permitindo definir subexpressões para uso com operadores de regex.