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

> Документация по формату Regexp

# Regexp

| Ввод | Вывод | Псевдоним |
| ---- | ----- | --------- |
| ✔    | ✗     |           |

<div id="description">
  ## Описание
</div>

Формат `Regex` разбирает каждую строку импортируемых данных в соответствии с заданным регулярным выражением.

**Использование**

Регулярное выражение из настройки [format\_regexp](/ru/reference/settings/formats#format_regexp) применяется к каждой строке импортируемых данных. Количество подшаблонов в регулярном выражении должно совпадать с количеством столбцов в импортируемом наборе данных.

Строки импортируемых данных должны разделяться символом новой строки `'\n'` или последовательностью новой строки в стиле DOS `"\r\n"`.

Содержимое каждого совпавшего подшаблона разбирается методом соответствующего типа данных в соответствии с настройкой [format\_regexp\_escaping\_rule](/ru/reference/settings/formats#format_regexp_escaping_rule).

Если регулярное выражение не совпадает со строкой и [format\_regexp\_skip\_unmatched](/ru/reference/settings/formats#format_regexp_escaping_rule) установлено значение 1, строка пропускается без уведомления. В противном случае генерируется исключение.

<div id="example-usage">
  ## Пример использования
</div>

Рассмотрим файл `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
```

и таблица `imp_regex_table`:

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

Мы вставим данные из указанного выше файла в таблицу выше с помощью следующего запроса:

```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;"
```

Теперь мы можем выполнить `SELECT` из таблицы, чтобы увидеть, как формат `Regex` разобрал данные из файла:

```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">
  ## Настройки формата
</div>

При работе с форматом `Regexp` можно использовать следующие настройки:

* `format_regexp` — [String](/ru/reference/data-types/string). Содержит регулярное выражение в синтаксисе [re2](https://github.com/google/re2/wiki/Syntax).

* `format_regexp_escaping_rule` — [String](/ru/reference/data-types/string). Поддерживаются следующие правила экранирования:

  * CSV (как в [CSV](/ru/reference/formats/CSV/CSV)
  * JSON (как в [JSONEachRow](/ru/reference/formats/JSON/JSONEachRow)
  * Escaped (как в [TSV](/ru/reference/formats/TabSeparated/TabSeparated)
  * Quoted (как в [Values](/ru/reference/formats/Values)
  * Raw (извлекает подшаблоны целиком, без правил экранирования, как в [TSVRaw](/ru/reference/formats/TabSeparated/TabSeparated)

* `format_regexp_skip_unmatched` — [UInt8](/ru/reference/data-types/int-uint). Определяет, следует ли сгенерировать исключение, если выражение `format_regexp` не соответствует импортируемым данным. Можно установить значение `0` или `1`.
