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

# YAMLRegExpTree 딕셔너리 소스

> 정규식 트리 딕셔너리의 소스로 사용할 YAML 파일을 구성합니다.

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>;
};

`YAMLRegExpTree` 소스는 로컬 파일 시스템의 YAML 파일에서 정규식 트리를 로드합니다.
이 소스는 [`regexp_tree`](/ko/reference/statements/create/dictionary/layouts/regexp-tree) 딕셔너리 레이아웃에서만 사용하도록 설계되었으며,
user agent 파싱과 같은 패턴 기반 lookup을 위해 계층적 정규식-속성 매핑을 제공합니다.

<Note>
  `YAMLRegExpTree` 소스는 ClickHouse Open Source에서만 사용할 수 있습니다.
  ClickHouse Cloud에서는 대신 딕셔너리를 CSV로 내보낸 후 [ClickHouse 테이블 소스](/ko/reference/statements/create/dictionary/sources/clickhouse)를 통해 로드하십시오.
  자세한 내용은 [ClickHouse Cloud에서 regexp\_tree 딕셔너리 사용](/ko/reference/statements/create/dictionary/layouts/regexp-tree#use-regular-expression-tree-dictionary-in-clickhouse-cloud)을 참조하십시오.
</Note>

<div id="configuration">
  ## 구성
</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);
```

설정 필드:

| 설정     | 설명                                                                              |
| ------ | ------------------------------------------------------------------------------- |
| `PATH` | 정규식 트리가 들어 있는 YAML 파일의 절대 경로입니다. DDL을 통해 생성한 경우 파일은 `user_files` 디렉터리에 있어야 합니다. |

<div id="yaml-file-structure">
  ## YAML 파일 구조
</div>

YAML 파일에는 정규식 트리 노드의 목록이 들어 있습니다. 각 노드는 속성과 하위 노드를 가질 수 있으며, 계층 구조를 이룹니다.

```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'
```

각 노드는 다음과 같은 구조를 가집니다:

* **`regexp`**: 이 노드의 정규식입니다.
* **attributes**: 사용자 정의 딕셔너리 속성(예: `name`, `version`)입니다. 속성 값에는 정규식의 캡처 그룹을 참조하는 **역참조**가 포함될 수 있으며, `\1` 또는 `$1`(1-9의 숫자)로 표기합니다. 이는 쿼리 시점에 일치한 캡처 그룹으로 대체됩니다.
* **child nodes**: 자식 목록입니다. 각 자식은 자체 속성을 가지며, 필요에 따라 추가 자식을 더 포함할 수 있습니다. 자식 목록의 이름은 임의로 정할 수 있습니다(예: 위의 `versions`). 문자열 매칭은 깊이 우선 방식으로 진행됩니다. 문자열이 어떤 노드와 일치하면 해당 노드의 자식도 검사합니다. 가장 깊은 수준에서 일치한 노드의 속성이 우선 적용되며, 이름이 같은 상위 속성은 덮어씁니다.

<div id="related-pages">
  ## 관련 페이지
</div>

* [regexp\_tree 딕셔너리 레이아웃](/ko/reference/statements/create/dictionary/layouts/regexp-tree) — 레이아웃 구성, 쿼리 예시, 매칭 모드
* [dictGet](/ko/reference/functions/regular-functions/ext-dict-functions#dictGet), [dictGetAll](/ko/reference/functions/regular-functions/ext-dict-functions#dictGetAll) — regexp 트리 딕셔너리를 조회하는 함수
