# ExtractRegEx 스크립트 및 차트 함수

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

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

구문:

ExtractRegEx (text, regex [, field\_no])

반환 데이터 유형: 문자열

인수

| 인수 | 설명 |
| --- | --- |
| text | 반환 값에서 추출할 텍스트를 포함하는 문자열 표현식. |
| regex | 텍스트를 추출하는 데 사용하는 정규 표현식. |
| 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>ExtractRegEx()</span> 함수를 사용하고 <span>field_no</span>를 생략하면 함수는 일치 항목 수만큼 레코드를 생성합니다.</p> </li> <li> <p><span>ExtractRegEx()</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> |

함수 예

| 예제 | 결과 |
| --- | --- |
| `ExtractRegEx('a,b c;1 2,3','[a-z]\|[0-9]', 1)` | 첫 번째로 찾은 일치 항목인 `a`를 반환합니다. |
| `ExtractRegEx('a,b c;1 2,3','[a-z]\|[0-9]', 2)` | 두 번째로 찾은 일치 항목인 `b`를 반환합니다. |
| `ExtractRegEx('a,b c;1 2,3','[a-z]\|[0-9]', 4)` | 네 번째로 찾은 일치 항목인 `1`을 반환합니다. |
| `ExtractRegEx('abc','a\|b',-1)` | `b`을 반환합니다. 음수 값이 지정되면 일치 항목은 역순으로 계산됩니다. |
| `ExtractRegEx('A,B C;1 2,3','[a-c]\|[4-9]')` | ExtractRegEx()는 대/소문자를 구분하고 대/소문자를 구분하지 않는 변형이 사용되지 않았기 때문에 null 값을 반환합니다. |
| `ExtractRegExI('A,B C;1 2,3','[a-c]\|[4-9]')` | 대/소문자를 구분하지 않는 변형인 ExtractRegExI()이 사용되었기 때문에 `A`를 반환합니다. |

## ExtractRegEx를 사용하는 경우

Extract RegEx()를 사용하면 다른 정보(예: 무료 문자 또는 JSON 문자열)를 포함할 수 있는 데이터에서 격리하려는 정보를 추출할 수 있습니다. 예:

* 텍스트에서 이메일 주소, 전화번호, 계좌 번호 및 기타 정보를 추출합니다.

* 텍스트에서 숫자 값을 추출합니다(예: 통화).

* 텍스트나 숫자형 데이터의 서식을 표준화합니다.

## 예 1 – JSON에서 이메일 주소를 추출하는 스크립트 로드

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

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

개요

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

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

* 필드 `OrderJson`을 포함하는 테이블 `OrderDetails`.

* 필드 `OrderJson`에는 주문 데이터가 포함된 JSON 문자열이 포함되어 있습니다. 들여쓰기, 줄 바꿈 등의 서식이 JSON에서 제거되었습니다. 주문 데이터에는 별도의 값으로 추출하려는 이메일 주소가 포함되어 있습니다.

* 새 테이블 `EmailAddresses`(`OrderDetails` 이후에 로드됨). `EmailAddresses` LOAD 문에서 `OrderDetails` 테이블에서 `OrderJson` 필드를 로드하고 추출된 이메일 주소가 포함된 새 계산 필드 `Email`을 만듭니다. 그런 다음 `OrderDetails`가 삭제됩니다.

요구 사항:

* 특정 도메인의 이메일 주소: `example.com`.

* 영숫자를 포함한 모든 문자와 정의된 특수문자를 포함하는 이메일 주소입니다.

로드 스크립트

```
OrderDetails:

Load * Inline `
OrderJson
{"Orders":[{"order_id":"12345","customer":{"name":"John Doe","email":"john.doe@example.com"},"items":{"product":"Laptop","quantity":2,"price":1200},"total_price":2400},{"order_id":"12346","customer":{"name":"Jane Doe","email":"jane.doe@example.com"},"items":{"product":"Tablet","quantity":4,"price":400},"total_price":1600},{"order_id":"12347","customer":{"name":"Amalia Craig","email":"amalia.craig@example.com"},"items":{"product":"Desktop Computer","quantity":1,"price":1900},"total_price":1900},{"order_id":"12348","customer":{"name":"Ken Roberts","email":"ken.roberts@example.com"},"items":{"product":"Phone Charger Cable","quantity":110,"price":1900},"total_price":1210}]}
` (delimiter is '\t');

EmailAddresses:

Load OrderJson, ExtractRegEx(OrderJson, '[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@example.com') as Email Resident OrderDetails;

Drop table OrderDetails;
```

결과

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

* `Email`

결과 테이블

| Email |
| --- |
| amalia.craig@example.com |
| jane.doe@example.com |
| john.doe@example.com |
| ken.roberts@example.com |

field\_no에 대한 인수 값을 지정하지 않으면 모든 일치 항목이 자동으로 별도의 값으로 추출됩니다.

## 예 2 – 통화 금액에서 숫자 값을 추출하는 스크립트 로드

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

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

개요

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

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

* 판매 데이터가 포함된 테이블 `Sales`.

* `Sales` 테이블 내에는 USD로 표시된 트랜잭션 금액이 포함된 `Amount`라는 필드가 있습니다. 이러한 금액은 통화 기호와 코드를 포함한 문자열로 표현됩니다.

* `Sales`, `OrderAmountNumeric_USD` 내의 사용자 지정 필드 정의는 각 금액을 순수한 숫자 값으로 추출합니다.이 데이터는 차트 집계에 사용할 수 있도록 숫자 형태여야 합니다.

로드 스크립트

```
SET DateFormat='MM-DD-YYYY';

Sales:

Load ExtractRegEx(Amount, '[0-9]+.[0-9]{2}') as OrderAmountNumeric_USD, * Inline `

OrderID, OrderDate, Product, Amount
1, '12-27-2024', Software, $100.31 USD
2, '12-28-2024', Electronics, $513.93 USD
3, '12-29-2024', Grocery, $34.66 USD
4, '12-30-2024', Furniture, $1124.58 USD
5, '12-31-2024', Software, $95.95 USD
6, '01-01-2025', Software, $601.00 USD
7, '01-02-2025', Grocery, $1534.20 USD
8, '01-03-2025', Produce, $51.49 USD
9, '01-04-2025', Home Improvement, $176.12 USD
10, '01-05-2025', Produce, $432.77 USD
11, '01-06-2025', Software, $270.01 USD
12, '01-07-2025', Electronics, $83.85 USD
13, '01-08-2025', Furniture, $65.65 USD
14, '01-09-2025', Electronics, $1526.39 USD
15, '01-10-2025', Software, $432.44 USD
16, '01-11-2025', Furniture, $888.15 USD
17, '01-12-2025', Furniture, $300.00 USD
18, '01-13-2025', Grocery, $109.53 USD
19, '01-14-2025', Furniture, $487.97 USD
20, '01-15-2025', Software, $65.09 USD
`;
```

결과

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

* `OrderID`

* `Amount`

* `OrderAmountNumeric_USD`

결과 테이블

| OrderID | Amount | OrderAmountNumeric\_USD |
| --- | --- | --- |
| 1 | $100.31 USD | 100.31 |
| 2 | $513.93 USD | 513.93 |
| 3 | $34.66 USD | 34.66 |
| 4 | $1124.58 USD | 1124.58 |
| 5 | $95.95 USD | 95.95 |
| 6 | $601.00 USD | 601.00 |
| 7 | $1534.20 USD | 1534.20 |
| 8 | $51.49 USD | 51.49 |
| 9 | $176.12 USD | 176.12 |
| 10 | $432.77 USD | 432.77 |
| 11 | $270.01 USD | 270.01 |
| 12 | $83.85 USD | 83.85 |
| 13 | $65.65 USD | 65.65 |
| 14 | $1526.39 USD | 1526.39 |
| 15 | $432.44 USD | 432.44 |
| 16 | $888.15 USD | 888.15 |
| 17 | $300.00 USD | 300.00 |
| 18 | $109.53 USD | 109.53 |
| 19 | $487.97 USD | 487.97 |
| 20 | $65.09 USD | 65.09 |

## 예 3 – JSON에서 이메일 주소를 추출하는 차트 표현식

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

#### 차트 표현식 및 결과

개요

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

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

* 필드 `OrderJson`을 포함하는 테이블 `OrderDetails`.

* 필드 `OrderJson`에는 주문 데이터가 포함된 JSON 문자열이 포함되어 있습니다. 들여쓰기, 줄 바꿈 등의 서식이 JSON에서 제거되었습니다. 주문 데이터에는 별도의 값으로 추출하려는 이메일 주소가 포함되어 있습니다.

요구 사항:

* 특정 도메인의 이메일 주소: `example.com`.

* 영숫자를 포함한 모든 문자와 정의된 특수문자를 포함하는 이메일 주소입니다.

로드 스크립트

```
OrderDetails:

Load * Inline `
OrderJson
{"Orders":[{"order_id":"12345","customer":{"name":"John Doe","email":"john.doe@example.com"},"items":{"product":"Laptop","quantity":2,"price":1200},"total_price":2400},{"order_id":"12346","customer":{"name":"Jane Doe","email":"jane.doe@example.com"},"items":{"product":"Tablet","quantity":4,"price":400},"total_price":1600},{"order_id":"12347","customer":{"name":"Amalia Craig","email":"amalia.craig@example.com"},"items":{"product":"Desktop Computer","quantity":1,"price":1900},"total_price":1900},{"order_id":"12348","customer":{"name":"Ken Roberts","email":"ken.roberts@example.com"},"items":{"product":"Phone Charger Cable","quantity":110,"price":1900},"total_price":1210}]}
` (delimiter is '\t');
```

결과

데이터를 로드하고 시트를 엽니다. 표를 만들고 다음 각 표현식을 계산 차원으로 추가합니다.

* `=ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@example.com',1)`

* `=ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@example.com',2)`

* `=ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@example.com',3)`

* `=ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@example.com',4)`

결과 테이블

| =ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&\*-\_+=~{\|}\/.'']+@example.com',1) | =ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&\*-\_+=~{\|}\/.'']+@example.com',2) | =ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&\*-\_+=~{\|}\/.'']+@example.com',3) | =ExtractRegEx(OrderJson,'[a-zA-Z0-9!#$%^&\*-\_+=~{\|}\/.'']+@example.com',4) |
| --- | --- | --- | --- |
| john.doe@example.com | jane.doe@example.com | amalia.craig@example.com | ken.roberts@example.com |

## 자세한 정보

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