# ReplaceRegEx - 스크립트 및 차트 함수

ReplaceRegEx()는 입력 문자열과 지정된 정규 표현식 패턴 사이의 하나 이상의 일치 항목을 바꾼 후 문자열을 반환합니다. 일치하는 텍스트를 바꾸는 텍스트는 to\_str 인수에 지정됩니다. 이 함수는 왼쪽에서 오른쪽으로 작동하지만, 음수 occurrence 값을 지정하면 함수는 오른쪽에서 왼쪽으로 읽습니다.

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

구문:

ReplaceRegEx (text, regex, to\_str [, occurrence])

반환 데이터 유형: 문자열

인수

| 인수 | 설명 |
| --- | --- |
| text | to\_str의 새 텍스트로 전체 또는 일부를 바꾸려는 입력 문자열 텍스트. |
| regex | 텍스트를 바꿀 시기를 정의하는 정규 표현식. 이 인수와 text 인수 간의 일치 항목이 바뀝니다. |
| to\_str | text의 기존 콘텐츠를 바꾸는 데 사용할 새 텍스트. |
| occurrence | 새 텍스트로 바꿀 일치 항목(입력 텍스트와 정규 표현식 간)의 번호.<br><br>이는 선택적인 인수입니다. 생략하면 기본값은 0입니다. 값 0을 사용하거나 인수가 생략되면 text와 regex 사이의 모든 일치 항목이 to\_str로 바뀝니다.<br><br>오른쪽에서 왼쪽으로 일치 항목을 식별하려면 occurrence에 음수 값을 지정할 수 있습니다. |

함수 예

| 예 | 결과 |
| --- | --- |
| `ReplaceRegEx('abc123','[0-9]','x')` | `abcxxx`을 반환합니다. 이 예에서 정규식 패턴과 일치하는 입력 문자열의 모든 텍스트가 새 텍스트로 바뀝니다. |
| `ReplaceRegEx('abc123','[0-9]','x',1)` | `abcx23`을 반환합니다. 입력 문자열과 정규식 패턴 사이의 일치 항목 중 첫 번째로 나타나는 부분만 바뀝니다. |
| `ReplaceRegEx('abc123','[0-9]','x',4)` | `abc123`을 반환합니다. 입력 문자열과 정규식 패턴 사이에는 세 가지 일치 가능성만 있으므로 수정은 수행되지 않습니다. |
| `ReplaceRegEx('ABC123','[a-c]','5')` | `ABC123`을 반환합니다. ReplaceRegEx()는 대/소문자를 구분하므로 수정이 수행되지 않으며, 대/소문자를 구분하지 않는 변형은 사용되지 않습니다. |
| `ReplaceRegExI('ABC123','[a-c]','5')` | `555123`을 반환합니다. 대/소문자를 구분하지 않는 함수 변형인 ReplaceRegExI()이 사용됩니다. |

## 사용 시기

특히 데이터에 복잡한 패턴이 있는 경우, ReplaceRegEx()를 사용하여 서식 및 규정 준수 표준에 맞게 텍스트를 수정할 수 있습니다. 예를 들어, 전화번호 문자열을 다시 포맷하여 숫자 값만 포함되도록 할 수 있습니다.

필요한 경우 이 함수를 사용하여 PII(개인 식별 정보)와 같은 중요한 정보를 가려서 앱을 분석하는 사용자에게 표시되지 않도록 할 수도 있습니다.

## 예 1 – 직원 이메일 주소를 업데이트하기 위한 로드 스크립트

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

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

개요

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

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

* 조직의 직원 이메일 주소가 포함된 테이블 `Employees`.

* `Email_Original` 필드의 값에 대한 찾기 및 바꾸기 작업을 수행하기 위해 새 필드 `Email_Updated`을 만듭니다.

회사 이름이 변경된 후 모든 이메일 주소도 새 이름을 반영하도록 업데이트되었습니다.

요구 사항:

* `test.com`의 모든 도메인 참조를 `newcompanyname.com`으로 변환합니다.

* 대/소문자를 구분하지 않는 정규 표현식 작업을 사용해야 합니다.

로드 스크립트

```
Employees:

Load 
ReplaceRegExI(Email_Original, '@[a-zA-Z0-9.-]*\.?test\.com', '@newcompanyname.com') as Email_Updated,
* Inline [
ID, Email_Original
1, john_doe@test.com
2, jane_doe@test.com
3, Michael_Andrews@test.com
4, charlie_kent@test.com
5, frances_johnson@test.com
6, rebecca_smith@test.com
];
```

결과

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

* `ID`

* `Email_Original`

* `Email_Updated`

결과 테이블

| ID | Email\_Original | Email\_Updated |
| --- | --- | --- |
| 1 | john\_doe@test.com | john\_doe@newcompanyname.com |
| 2 | jane\_doe@test.com | jane\_doe@newcompanyname.com |
| 3 | Michael\_Andrews@test.com | Michael\_Andrews@newcompanyname.com |
| 4 | charlie\_kent@support.test.com | charlie\_kent@newcompanyname.com |
| 5 | frances\_johnson@test.com | frances\_johnson@newcompanyname.com |
| 6 | rebecca\_smith@hr.test.com | rebecca\_smith@newcompanyname.com |

## 예 2 – ISBN 코드의 형식을 지정하기 위한 스크립트 로드

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

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

개요

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

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

* 변수 `ISBN_13` 및 `ISBN_10`은 각각 13자리 및 10자리 ISBN 문자열 패턴에 사용할 정규 표현식을 저장합니다.

* ISBN 도서 코드에 대한 원시 숫자 값을 포함하는 테이블 `Employees`. 표에는 13자리와 10자리 ISBN이 모두 포함되어 있습니다.

* ISBN의 각 부분을 추출하기 위한 여러 작업과, 표준적이고 예상되는 형식으로 전체 코드를 보여 주는 문자열을 반환합니다. ReplaceRegEx(), MatchRegEx(), ExtractRegExGroup(), Pick()의 조합을 사용합니다.

요구 사항:

* 표준화된 서식을 사용하여 숫자를 더 읽기 쉬운 텍스트로 포맷하려고 합니다.

  * ISBN ###-#-####-####-#

  * ISBN #-###-#####-#

로드 스크립트

```
Set ISBN_13 = '^([0-9]{3})([0-9]{1})([0-9]{4})([0-9]{4})([0-9]{1})$';
Set ISBN_10 = '^([0-9]{1})([0-9]{3})([0-9]{5})([0-9]{1})$';

Formatted_Codes:

Load
Pick(MatchRegEx(ISBN_Unformatted, '$(ISBN_13)', '$(ISBN_10)'), ReplaceRegEx(ISBN_Unformatted, '$(ISBN_13)', 'ISBN ' & ISBN_Component1 & '-' & ISBN_Component2 & '-' & ISBN_Component3 & '-' & ISBN_Component4 & '-' & ISBN_Component5), ReplaceRegEx(ISBN_Unformatted, '$(ISBN_10)', 'ISBN ' & ISBN_Component1 & '-' & ISBN_Component2 & '-' & ISBN_Component3 & '-' & ISBN_Component4)) as ISBN_Formatted;

Load *,
Pick(MatchRegEx(ISBN_Unformatted, '$(ISBN_10)', '$(ISBN_13)'), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_10)', 1, 1), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_13)', 1, 1)) as ISBN_Component1,
Pick(MatchRegEx(ISBN_Unformatted, '$(ISBN_10)', '$(ISBN_13)'), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_10)', 2, 1), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_13)', 2, 1)) as ISBN_Component2,
Pick(MatchRegEx(ISBN_Unformatted, '$(ISBN_10)', '$(ISBN_13)'), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_10)', 3, 1), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_13)', 3, 1)) as ISBN_Component3,
Pick(MatchRegEx(ISBN_Unformatted, '$(ISBN_10)', '$(ISBN_13)'), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_10)', 4, 1), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_13)', 4, 1)) as ISBN_Component4,
Pick(MatchRegEx(ISBN_Unformatted, '$(ISBN_10)', '$(ISBN_13)'), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_10)', 5, 1), ExtractRegExGroup(ISBN_Unformatted, '$(ISBN_13)', 5, 1)) as ISBN_Component5
inline `
ISBN_Unformatted
1233123412340
0122012301234
0001012301232
0111234567
5552555555553
2224222222222
1901234568
3333333333333
5551515151513
2321232323231
2444444444
8880999900000
`;
```

결과

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

* `ISBN_Formatted`

결과 테이블

| ISBN\_Formatted |
| --- |
| ISBN 000-1-0123-0123-2 |
| ISBN 0-111-23456-7 |
| ISBN 1-901-23456-8 |
| ISBN 2-444-44444-4 |
| ISBN 012-2-0123-0123-4 |
| ISBN 123-3-1234-1234-0 |
| ISBN 222-4-2222-2222-2 |
| ISBN 232-1-2323-2323-1 |
| ISBN 333-3-3333-3333-3 |
| ISBN 555-1-5151-5151-3 |
| ISBN 555-2-5555-5555-3 |
| ISBN 888-0-9999-0000-0 |

## 예 3 – 보조 이메일 주소를 업데이트하기 위한 차트 표현식

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

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

개요

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

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

* 조직의 직원 이메일 주소가 포함된 테이블 `Employees`. 이러한 정보는 각 직원에 대한 단일 문자열로 저장되며, 여러 개의 이메일 주소가 저장됩니다.

요구 사항:

* 보조 이메일 주소를 도메인 `newcompanyname.com`을 사용하도록 업데이트해야 합니다. 기본 이메일 주소를 업데이트하려고 하지 않습니다.

* 대/소문자를 구분하지 않는 정규 표현식 작업을 사용해야 합니다.

로드 스크립트

```
Employees:

Load * Inline [
ID, Emails
1, Primary: john_doe@test.com Secondary: john_michael_doe@example.com
2, Primary: jane_doe@test.com Secondary: jane_tabitha_doe_doe@example.com
3, Primary: Michael_Andrews@test.com Secondary: Michael_John_Andrews@example.com
4, Primary: charlie_kent@test.com Secondary: charlie_peter_kent@example.com
5, Primary: frances_johnson@test.com Secondary: frances_johnson@example.com
6, Primary: rebecca_smith@test.com Secondary: rebecca_danielle_smith@example.com
];
```

결과

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

* `ID`

* `Emails`

다음 계산 차원을 추가합니다.

```
=ReplaceRegExI(Emails,'@[a-zA-Z0-9.-]*\.?[a-zA-Z0-9]*\.com','@newcompanyname.com',2)
```

결과 테이블

| ID | Emails | =ReplaceRegExI(Emails,'@[a-zA-Z0-9.-]\*\.?example\.com','@newcompanyname.com',2) |
| --- | --- | --- |
| 1 | Primary: john\_doe@test.com Secondary: john\_michael\_doe@example.com | Primary: john\_doe@test.com Secondary: john\_michael\_doe@newcompanyname.com |
| 2 | Primary: jane\_doe@test.com Secondary: jane\_tabitha\_doe\_doe@example.com | Primary: jane\_doe@test.com Secondary: jane\_tabitha\_doe\_doe@newcompanyname.com |
| 3 | Primary: Michael\_Andrews@test.com Secondary: Michael\_John\_Andrews@example.com | Primary: Michael\_Andrews@test.com Secondary: Michael\_John\_Andrews@newcompanyname.com |
| 4 | Primary: charlie\_kent@test.com Secondary: charlie\_peter\_kent@example.com | Primary: charlie\_kent@test.com Secondary: charlie\_peter\_kent@newcompanyname.com.com |
| 5 | Primary: frances\_johnson@test.com Secondary: frances\_johnson@example.com | Primary: frances\_johnson@test.com Secondary: frances\_johnson@newcompanyname.com |
| 6 | Primary: rebecca\_smith@test.com Secondary: rebecca\_danielle\_smith@example.com | Primary: rebecca\_smith@test.com Secondary: rebecca\_danielle\_smith@newcompanyname.com |

occurrence 인수에 값 2를 지정하면 정규식 패턴과 일치하는 두 번째 인스턴스만 업데이트할 수 있습니다.

## 자세한 정보

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