> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Fonte de dicionário YAMLRegExpTree

> Configure um arquivo YAML como fonte para dicionários de árvore de expressões regulares.

export const CloudNotSupportedBadge = () => {
  return <div className="cloudNotSupportedBadge">
            <div className="cloudNotSupportedIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.5" d="M6.33366 12.6666L12.3739 12.6667C13.6593 12.6667 14.7073 11.6187 14.7073 10.3334C14.7073 9.04804 13.6593 8.00003 12.3739 8.00003C12.3739 8.00003 12.3337 7.66659 12.0003 7.33325M10.667 5.33322C8.00033 2.33325 4.45395 4.78537 4.14195 6.68203C2.55728 6.7627 1.29395 8.06203 1.29395 9.6667C1.29395 11.3234 2.66699 12.6666 4.00033 12.6666" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.5" d="M2.66699 14L12.0003 4.66663" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>

        </div>
            Not supported in ClickHouse Cloud
        </div>;
};

A fonte `YAMLRegExpTree` carrega uma árvore de expressões regulares de um arquivo YAML no sistema de arquivos local.
Ela foi projetada exclusivamente para uso com o layout de dicionário [`regexp_tree`](/pt-BR/reference/statements/create/dictionary/layouts/regexp-tree)
e fornece mapeamentos hierárquicos de regex para atributos para buscas baseadas em padrões, como a análise de user agent.

<Note>
  A fonte `YAMLRegExpTree` está disponível apenas no ClickHouse Open Source.
  Para o ClickHouse Cloud, exporte o dicionário para CSV e carregue-o por meio de uma [fonte de tabela do ClickHouse](/pt-BR/reference/statements/create/dictionary/sources/clickhouse).
  Consulte [Uso de dicionários regexp\_tree no ClickHouse Cloud](/pt-BR/reference/statements/create/dictionary/layouts/regexp-tree#use-regular-expression-tree-dictionary-in-clickhouse-cloud) para mais detalhes.
</Note>

<div id="configuration">
  ## Configuração
</div>

```sql theme={null}
CREATE DICTIONARY regexp_dict
(
    regexp String,
    name String,
    version String
)
PRIMARY KEY(regexp)
SOURCE(YAMLRegExpTree(PATH '/var/lib/clickhouse/user_files/regexp_tree.yaml'))
LAYOUT(regexp_tree)
LIFETIME(0);
```

Campos de configuração:

| Configuração | Descrição                                                                                                                                                  |
| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `PATH`       | O caminho absoluto para o arquivo YAML que contém a árvore de expressões regulares. Quando criado via DDL, o arquivo deve estar no diretório `user_files`. |

<div id="yaml-file-structure">
  ## Estrutura do arquivo YAML
</div>

O arquivo YAML contém uma lista de nós de uma árvore de expressões regulares. Cada nó pode ter atributos e nós filhos, formando uma hierarquia:

```yaml theme={null}
- regexp: 'Linux/(\d+[\.\d]*).+tlinux'
  name: 'TencentOS'
  version: '\1'

- regexp: '\d+/tclwebkit(?:\d+[\.\d]*)'
  name: 'Android'
  versions:
    - regexp: '33/tclwebkit'
      version: '13'
    - regexp: '3[12]/tclwebkit'
      version: '12'
    - regexp: '30/tclwebkit'
      version: '11'
    - regexp: '29/tclwebkit'
      version: '10'
```

Cada nó tem a seguinte estrutura:

* **`regexp`**: A expressão regular deste nó.
* **attributes**: Atributos de dicionário definidos pelo usuário (por exemplo, `name`, `version`). Os valores dos atributos podem conter **referências retroativas** a grupos de captura na expressão regular, escritas como `\1` ou `$1` (números de 1 a 9). Elas são substituídas pelo grupo de captura correspondente durante a consulta.
* **child nodes**: Uma lista de filhos, cada um com seus próprios atributos e, opcionalmente, mais filhos. O nome da lista de filhos é arbitrário (por exemplo, `versions` acima). A correspondência de strings segue uma busca em profundidade: se uma string corresponder a um nó, seus filhos também serão verificados. Os atributos do nó correspondente mais profundo têm precedência, substituindo os atributos do nó pai com o mesmo nome.

<div id="related-pages">
  ## Páginas relacionadas
</div>

* [layout de dicionário regexp\_tree](/pt-BR/reference/statements/create/dictionary/layouts/regexp-tree) — configuração do layout, exemplos de consulta e modos de correspondência
* [dictGet](/pt-BR/reference/functions/regular-functions/ext-dict-functions#dictGet), [dictGetAll](/pt-BR/reference/functions/regular-functions/ext-dict-functions#dictGetAll) — funções para consultar dicionários regexp tree
