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

> Regexp フォーマットに関するドキュメント

# Regexp

| 入力 | 出力 | エイリアス |
| -- | -- | ----- |
| ✔  | ✗  |       |

<div id="description">
  ## 説明
</div>

`Regex` フォーマットは、指定された正規表現に基づいて、インポートされたデータの各行を解析します。

**使用方法**

[format\_regexp](/ja/reference/settings/formats#format_regexp) 設定で指定した正規表現が、インポートされたデータの各行に適用されます。正規表現内のサブパターン数は、インポートするデータセットのカラム数と一致している必要があります。

インポートされたデータの各行は、改行文字 `'\n'` または DOS 形式の改行 `"\r\n"` で区切られている必要があります。

一致した各サブパターンの内容は、[format\_regexp\_escaping\_rule](/ja/reference/settings/formats#format_regexp_escaping_rule) 設定に従って、対応するデータ型のメソッドで解析されます。

正規表現が行に一致せず、かつ [format\_regexp\_skip\_unmatched](/ja/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](/ja/reference/data-types/string)。[re2](https://github.com/google/re2/wiki/Syntax) フォーマットの正規表現を指定します。

* `format_regexp_escaping_rule` — [String](/ja/reference/data-types/string)。次のエスケープ規則をサポートしています。

  * CSV ([CSV](/ja/reference/formats/CSV/CSV) と同様)
  * JSON ([JSONEachRow](/ja/reference/formats/JSON/JSONEachRow) と同様)
  * Escaped ([TSV](/ja/reference/formats/TabSeparated/TabSeparated) と同様)
  * Quoted ([Values](/ja/reference/formats/Values) と同様)
  * Raw (サブパターン全体をそのまま抽出します。エスケープ規則はなく、[TSVRaw](/ja/reference/formats/TabSeparated/TabSeparated) と同様です)

* `format_regexp_skip_unmatched` — [UInt8](/ja/reference/data-types/int-uint)。`format_regexp` 式がインポートしたデータに一致しない場合に例外をスローするかどうかを指定します。`0` または `1` を設定できます。
