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

> وثائق تنسيق Regexp

# Regexp

| الإدخال | الإخراج | الاسم المستعار |
| ------- | ------- | -------------- |
| ✔       | ✗       |                |

<div id="description">
  ## الوصف
</div>

يحلّل التنسيق `Regex` كل سطر من البيانات المستوردة وفقًا للتعبير النمطي المُحدَّد.

**الاستخدام**

يُطبَّق التعبير النمطي من إعداد [format\_regexp](/ar/reference/settings/formats#format_regexp) على كل سطر من البيانات المستوردة. ويجب أن يساوي عدد الأنماط الفرعية في التعبير النمطي عدد الأعمدة في مجموعة البيانات المستوردة.

يجب أن تكون أسطر البيانات المستوردة مفصولة بمحرف سطر جديد `'\n'` أو بمحرف سطر جديد بنمط DOS `"\r\n"`.

يُحلَّل محتوى كل نمط فرعي مطابق باستخدام طريقة التحليل الخاصة بنوع البيانات المقابل، وفقًا لإعداد [format\_regexp\_escaping\_rule](/ar/reference/settings/formats#format_regexp_escaping_rule).

إذا لم يطابق التعبير النمطي السطر وكان [format\_regexp\_skip\_unmatched](/ar/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](/ar/reference/data-types/string). يحتوي على تعبير نمطي بتنسيق [re2](https://github.com/google/re2/wiki/Syntax).

* `format_regexp_escaping_rule` — [String](/ar/reference/data-types/string). قواعد الإفلات التالية مدعومة:

  * CSV (على غرار [CSV](/ar/reference/formats/CSV/CSV)
  * JSON (على غرار [JSONEachRow](/ar/reference/formats/JSON/JSONEachRow)
  * Escaped (على غرار [TSV](/ar/reference/formats/TabSeparated/TabSeparated)
  * Quoted (على غرار [Values](/ar/reference/formats/Values)
  * Raw (يستخرج الأنماط الفرعية كاملةً، من دون قواعد إفلات، على غرار [TSVRaw](/ar/reference/formats/TabSeparated/TabSeparated)

* `format_regexp_skip_unmatched` — [UInt8](/ar/reference/data-types/int-uint). يحدد ما إذا كان ينبغي إطلاق استثناء إذا لم يطابق التعبير `format_regexp` البيانات المستوردة. يمكن ضبطه على `0` أو `1`.
