# SubFieldRegEx 스크립트 및 차트 함수

SubFieldRegEx()는 지정된 정규 표현식 패턴을 구분 기호로 사용하여 입력 문자열 표현식에서 텍스트를 추출합니다. 일치하는 항목이 없으면 함수는 null 값을 반환합니다.

이 함수는 대/소문자를 구분하는 정규식 연산을 수행합니다. 또는 SubFieldRegExI() 변형을 사용하여 대/소문자를 구분하지 않는 정규식 작업을 수행할 수 있습니다.

구문:

SubFieldRegEx (text, regex\_delimiter [, field\_no])

반환 데이터 유형: 문자열

인수

| 인수 | 설명 |
| --- | --- |
| text | 정규 표현식 패턴을 검색하려는 입력 문자열 텍스트. |
| regex\_delimiter | 구분 기호로 사용할 정규 표현식을 포함하는 문자열 표현식. 동일한 정규 표현식 패턴에서 여러 개의 구분 기호를 지정하려면 `\|`(세로 파이프) 문자로 구분하여 지정합니다. |
| field\_no | 추출하려는 하위 구분의 번호를 나타내는 정수 값입니다. 예를 들어, 네 번째 하위 구분을 추출하려면 `4` 값을 지정합니다. 이는 선택적인 인수입니다.<br><br>다음 사항은 해당 함수가 로드 스크립트나 차트 표현식에서 사용되는지 여부에 관계없이 적용됩니다.<br><br><ul> <li> <p><span>field_no</span>가 양수면 함수는 하나의 값을 반환하여 왼쪽에서 오른쪽으로 일치 항목을 식별합니다.</p> </li> <li> <p><span>field_no</span>가 음수면 함수는 하나의 값을 반환하여 오른쪽에서 왼쪽으로 일치 항목을 식별합니다.</p> </li> </ul><br><br>로드 스크립트에서 함수를 사용하는 경우:<br><br><ul> <li> <p><span>LOAD</span> 문에서 <span>SubFieldRegEx()</span> 함수를 사용하고 <span>field_no</span>를 생략하면 함수는 일치 항목 수만큼 레코드를 생성합니다.</p> </li> <li> <p><span>SubFieldRegEx()</span>를 사용하여 여러 필드가 로드되고 그 중 어느 것도 <span>field_no</span> 인수를 지정하지 않으면 모든 조합의 데카르트 곱이 만들어집니다.</p> </li> </ul><br><br>차트 표현식에서 함수를 사용하는 경우:<br><br><ul> <li> <p><span>field_no</span>를 생략하면 기본값은 <code>1</code>입니다.</p> </li> </ul> |

함수 예

| 예제 | 결과 |
| --- | --- |
| `SubFieldRegEx('a,b c;1 2,3',' \|,\|;', 1)` | `a`<br>을 반환합니다. 이 예에서는 세 개의 구분 기호 문자가 지정됩니다(공백, 쉼표, 세미콜론). |
| `SubFieldRegEx('a;b;c;1;2;3',';', 2)` | `b`<br>을 반환합니다. 이 경우에는 구분 기호 문자 하나만 지정됩니다(세미콜론). |
| `SubFieldRegEx('a,b c;1 2,3',' \|,\|;', 4)` | `1`<br>을 반환합니다. |

## SubFieldRegEx를 사용하는 경우

SubFieldRegEx()를 사용하면 구분 기호로 구분된 목록에서 여러 개별 값을 추출할 수 있습니다. 예를 들어, 보다 큰 자연어 블록 내에 쉼표로 구분된 목록이 있는 경우 이 함수를 사용하여 목록에서 각 개별 값을 격리하여 데이터 모델의 새 레코드로 만들 수 있습니다.

## 예 1 – 트랜잭션별로 태그를 구분하기 위한 로드 스크립트

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/SubFieldRegEx.htm)

#### 로드 스크립트 및 결과

개요

데이터 로드 편집기를 열고 새 섹션에 아래 로드 스크립트를 추가합니다.

로드 스크립트에는 다음이 포함됩니다.

* 트랜잭션 데이터를 초기에 포함하는 테이블 `Transaction_By_Tag`. 이 데이터는 개별 태그 값을 새 레코드로 추출하는 데 처리됩니다.

* 추출된 태그 값을 저장하기 위해 필드 `TransactionTag`을 만듭니다.

트랜잭션 태그가 포함된 필드에는 여러 개의 태그가 구분 기호로 구분된 텍스트 문자열 내에 포함되어 있습니다. 구분 기호는 다음 문자 중 하나가 될 수 있습니다. , | ;

로드 스크립트

```
Transaction_By_Tag:

Load SubFieldRegEx(Tags, ',|;|\|') as TransactionTag,
* Inline [
ID	Product	Tags	Amount
1	Product A	Special order,Eligible for return,Warranty included	100.93
2	Product B	Ineligible for return|No warranty available	51.11
3	Product C	No warranty available	12.83
4	Product B	Special order;Liquidation sale;Warranty included	209.48
] (delimiter is '\t');

drop fields Tags;
```

결과

데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 다음 필드를 차원으로 추가합니다.

* `ID`

* `Product`

* `TransactionTag`

결과 테이블

| ID | Product | TransactionTag |
| --- | --- | --- |
| 1 | Product A | Eligible for return |
| 1 | Product A | Warranty included |
| 1 | Product A | Special order |
| 2 | Product B | No warranty available |
| 2 | Product B | Ineligible for return |
| 3 | Product C | No warranty available |
| 4 | Product B | Liquidation sale |
| 4 | Product B | Special order |
| 4 | Product B | Warranty included |

이 예는 로드 스크립트에서 사용될 때 SubFieldRegEx()가 입력 문자열에서 찾은 각 일치 항목에 대해 별도의 행을 반환한다는 것을 보여 줍니다.

## 예 2 – 트랜잭션별로 태그를 구분하기 위한 차트 표현식

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/SubFieldRegEx.htm)

#### 로드 스크립트 및 결과

개요

데이터 로드 편집기를 열고 새 섹션에 아래 로드 스크립트를 추가합니다.

로드 스크립트에는 다음이 포함됩니다.

* 트랜잭션 데이터가 포함된 테이블 `Transaction_By_Tag`.

* 트랜잭션과 관련된 모든 태그를 저장하기 위한 텍스트 문자열이 들어 있는 필드 `Tags`.

요구 사항:

* 트랜잭션 태그가 포함된 필드에는 여러 개의 태그가 구분 기호로 구분된 텍스트 문자열 내에 포함되어 있습니다. 구분 기호는 다음 문자 중 하나가 될 수 있습니다. , | ;

* 차트 표현식을 사용하여 각 태그를 별도의 필드로 구분하고, 트랜잭션에 최대 세 개의 태그를 추가할 수 있도록 하려고 합니다.

로드 스크립트

```
Transaction_By_Tag:

Load * Inline [
ID	Product	Tags	Amount
1	Product A	Special order, Eligible for return, Warranty included	100.93
2	Product B	Ineligible for return | No warranty available	51.11
3	Product C	No warranty available	12.83
4	Product B	Special order;Liquidation sale;Warranty included	209.48
] (delimiter is '\t');
```

결과

데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 다음 필드를 차원으로 추가합니다.

* `ID`

* `Tags`

계산 차원을 추가합니다.

* 

  `=SubFieldRegEx(Tags, ',|;|\|', 1)`

* 

  `=SubFieldRegEx(Tags, ',|;|\|', 2)`

* 

  `=SubFieldRegEx(Tags, ',|;|\|', 3)`

결과 테이블

| ID | Tags | =SubFieldRegEx(Tags, ',\|;\|\\|', 1) | =SubFieldRegEx(Tags, ',\|;\|\\|', 2) | =SubFieldRegEx(Tags, ',\|;\|\\|', 3) |
| --- | --- | --- | --- | --- |
| 1 | Special order, Eligible for return, Warranty included | Special order | Eligible for return | Warranty included |
| 2 | Ineligible for return \| No warranty available | Ineligible for return | No warranty available | - |
| 3 | No warranty available | No warranty available | - | - |
| 4 | Special order;Liquidation sale;Warranty included | Special order | Liquidation sales | Warranty included |

## 자세한 정보

* [로드 스크립트 및 차트 표현식에서 정규식 작업](https://help.qlik.com/ko-KR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/regular-expressions-qlik-analytics.htm)