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

> Documentação do formato Regexp

# Regexp

| Entrada | Saída | Alias |
| ------- | ----- | ----- |
| ✔       | ✗     |       |

<div id="description">
  ## Descrição
</div>

O formato `Regex` processa cada linha dos dados importados de acordo com a expressão regular fornecida.

**Uso**

A expressão regular da configuração [format\_regexp](/pt-BR/reference/settings/formats#format_regexp) é aplicada a cada linha dos dados importados. O número de subpadrões na expressão regular deve ser igual ao número de colunas no conjunto de dados importado.

As linhas dos dados importados devem ser separadas pelo caractere de nova linha `'\n'` ou por uma nova linha no estilo DOS `"\r\n"`.

O conteúdo de cada subpadrão correspondente é processado com o método do tipo de dado correspondente, de acordo com a configuração [format\_regexp\_escaping\_rule](/pt-BR/reference/settings/formats#format_regexp_escaping_rule).

Se a expressão regular não corresponder à linha e [format\_regexp\_skip\_unmatched](/pt-BR/reference/settings/formats#format_regexp_escaping_rule) estiver definida como 1, a linha será ignorada silenciosamente. Caso contrário, uma exceção será lançada.

<div id="example-usage">
  ## Exemplo de uso
</div>

Considere o arquivo `data.tsv`:

```text title="data.tsv" theme={null}
id: 1 array: [1,2,3] string: str1 date: 2020-01-01
id: 2 array: [1,2,3] string: str2 date: 2020-01-02
id: 3 array: [1,2,3] string: str3 date: 2020-01-03
```

e a tabela `imp_regex_table`:

```sql title="Query" theme={null}
CREATE TABLE imp_regex_table (id UInt32, array Array(UInt32), string String, date Date) ENGINE = Memory;
```

Vamos inserir na tabela acima os dados do arquivo mencionado anteriormente usando a consulta a seguir:

```bash title="Query" theme={null}
$ cat data.tsv | clickhouse-client  --query "INSERT INTO imp_regex_table SETTINGS format_regexp='id: (.+?) array: (.+?) string: (.+?) date: (.+?)', format_regexp_escaping_rule='Escaped', format_regexp_skip_unmatched=0 FORMAT Regexp;"
```

Agora podemos fazer `SELECT` dos dados da tabela para ver como o formato `Regex` interpretou os dados do arquivo:

```sql title="Query" theme={null}
SELECT * FROM imp_regex_table;
```

```text title="Response" theme={null}
┌─id─┬─array───┬─string─┬───────date─┐
│  1 │ [1,2,3] │ str1   │ 2020-01-01 │
│  2 │ [1,2,3] │ str2   │ 2020-01-02 │
│  3 │ [1,2,3] │ str3   │ 2020-01-03 │
└────┴─────────┴────────┴────────────┘
```

<div id="format-settings">
  ## Configurações de formato
</div>

Ao trabalhar com o formato `Regexp`, você pode usar as seguintes configurações:

* `format_regexp` — [String](/pt-BR/reference/data-types/string). Contém uma expressão regular no formato [re2](https://github.com/google/re2/wiki/Syntax).

* `format_regexp_escaping_rule` — [String](/pt-BR/reference/data-types/string). Há suporte para as seguintes regras de escape:

  * CSV (de forma semelhante a [CSV](/pt-BR/reference/formats/CSV/CSV)
  * JSON (de forma semelhante a [JSONEachRow](/pt-BR/reference/formats/JSON/JSONEachRow)
  * Escaped (de forma semelhante a [TSV](/pt-BR/reference/formats/TabSeparated/TabSeparated)
  * Quoted (de forma semelhante a [Values](/pt-BR/reference/formats/Values)
  * Raw (extrai os subpadrões como um todo, sem regras de escape, de forma semelhante a [TSVRaw](/pt-BR/reference/formats/TabSeparated/TabSeparated)

* `format_regexp_skip_unmatched` — [UInt8](/pt-BR/reference/data-types/int-uint). Define se uma exceção deve ser lançada caso a expressão `format_regexp` não corresponda aos dados importados. Pode ser definido como `0` ou `1`.
