# ReplaceRegEx funkcja skryptu i funkcja wykresu

Funkcja ReplaceRegEx() zwraca ciąg znaków po zastąpieniu jednego lub więcej dopasowań między ciągiem wejściowym a określonym wzorcem wyrażenia regularnego. Tekst zastępujący pasujący tekst jest określony w argumencie to\_str. Funkcja ta działa od lewej do prawej, ale jeśli określisz ujemną wartość occurrence, funkcja będzie odczytywać od prawej do lewej.

Funkcja ta wykonuje operacje z wyrażeniami regularnymi, w których rozróżniana jest wielkość liter. Zamiast tego można użyć wariantu ReplaceRegExI(), aby wykonywać operacje z wyrażeniami regularnymi bez rozróżniania wielkości liter.

[ReplaceRegEx - Script syntax and chart functions](https://play.vidyard.com/1STBZFJeqoouP4SSofdb5R)

Składnia:

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

Typ zwracanych danych: ciąg znaków

Argumenty

| Argument | Opis |
| --- | --- |
| text | Tekst ciągu wejściowego, który ma zostać zastąpiony w całości lub częściowo nowym tekstem z to\_str. |
| regex | Wyrażenie regularne określające, kiedy tekst ma zostać zastąpiony. Dopasowania między tym argumentem a argumentem text są zastępowane. |
| to\_str | Nowy tekst, który ma zastąpić istniejącą zawartość strony text. |
| occurrence | Numer dopasowania (między tekstem wejściowym a wyrażeniem regularnym) do zastąpienia nowym tekstem.<br><br>Ten argument jest opcjonalny. W razie pominięcia domyślną wartością jest 0. W przypadku użycia wartości 0 lub pominięcia argumentu wszystkie dopasowania między text a regex są zastępowane przez to\_str.<br><br>Można określić ujemną wartość occurrence, aby wyszukiwać dopasowania od prawej do lewej. |

Przykłady funkcji

| Przykład | Wynik |
| --- | --- |
| `ReplaceRegEx('abc123','[0-9]','x')` | Zwraca wartość `abcxxx`. W tym przykładzie cały tekst z ciągu wejściowego, który pasuje do wzorca wyrażenia regularnego, jest zastępowany nowym tekstem. |
| `ReplaceRegEx('abc123','[0-9]','x',1)` | Zwraca wartość `abcx23`. Zastępowane jest tylko pierwsze wystąpienie dopasowania między ciągiem wejściowym a wzorcem wyrażenia regularnego. |
| `ReplaceRegEx('abc123','[0-9]','x',4)` | Zwraca wartość `abc123`. Istnieją tylko trzy możliwe dopasowania między ciągiem wejściowym a wzorcem wyrażenia regularnego, więc nie jest wykonywana żadna modyfikacja. |
| `ReplaceRegEx('ABC123','[a-c]','5')` | Zwraca wartość `ABC123`. Żadna modyfikacja nie jest wykonywana, ponieważ ReplaceRegEx() uwzględnia wielkość liter, a wariant nieuwzględniający wielkości liter nie jest używany. |
| `ReplaceRegExI('ABC123','[a-c]','5')` | Zwraca wartość `555123`. Jest używany wariant funkcji ReplaceRegExI(), który nie uwzględnia wielkości liter. |

## Kiedy używać ReplaceRegEx

Możesz użyć ReplaceRegEx() do modyfikacji tekstu w celu zachowania zgodności z formatowaniem i standardami, zwłaszcza gdy w danych występują złożone wzorce. Na przykład można przeformatować ciągi numerów telefonów tak, aby zawierały tylko wartości numeryczne.

W razie potrzeby można również użyć tej funkcji do maskowania poufnych informacji, takich jak dane osobowe, aby nie były one wyświetlane użytkownikom analizującym aplikację.

## Przykład 1 — skrypt ładowania do aktualizacji adresów e-mail pracowników

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

#### Skrypt ładowania i wyniki

Przegląd

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej sekcji.

Skrypt ładowania zawiera:

* Tabela `Employees` zawierająca adresy e-mail pracowników organizacji.

* Utworzenie nowego pola `Email_Updated` w celu wykonania operacji wyszukiwania i zamiany wartości w polu `Email_Original`.

Po zmianie nazwy firmy wszystkie adresy e-mail zostały zaktualizowane, aby odzwierciedlały nową nazwę.

Nasze wymagania:

* Konwertowanie wszystkich odwołań do domeny `test.com` na `newcompanyname.com`.

* Musimy używać operacji wyrażeń regularnych nieuwzględniających wielkości liter.

Skrypt ładowania

```
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
];
```

Wyniki

Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:

* `ID`

* `Email_Original`

* `Email_Updated`

Tabela wynikowa

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

## Przykład 2 — skrypt ładowania do formatowania kodów ISBN

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

#### Skrypt ładowania i wyniki

Przegląd

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej sekcji.

Skrypt ładowania zawiera:

* Zmienne `ISBN_13` i `ISBN_10`, które przechowują wyrażenia regularne używane odpowiednio dla 13-cyfrowych i 10-cyfrowych wzorców ciągów ISBN.

* Tabela `Employees` zawierająca nieprzetworzone wartości liczbowe dla kodów ISBN książek. Tabela zawiera zarówno 13-cyfrowe, jak i 10-cyfrowe numery ISBN.

* Kilka operacji, aby wyodrębnić każdą część numeru ISBN, a następnie zwrócić ciąg znaków pokazujący cały kod w standardowym, oczekiwanym formacie. Używamy kombinacji ReplaceRegEx(), MatchRegEx(), ExtractRegExGroup() i Pick().

Nasze wymagania:

* Chcemy sformatować numery w bardziej czytelny tekst, używając standardowego formatowania:

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

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

Skrypt ładowania

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

Wyniki

Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj to pole jako wymiar:

* `ISBN_Formatted`

Tabela wynikowa

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

## Przykład 3 — wyrażenie wykresu do aktualizacji drugorzędnych adresów e-mail

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

#### Wyrażenie wykresu i wyniki

Przegląd

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej sekcji.

Skrypt ładowania zawiera:

* Tabela `Employees` zawierająca adresy e-mail pracowników organizacji. Są one przechowywane w jednym ciągu dla każdego pracownika, w którym przechowywanych jest wiele adresów e-mail.

Nasze wymagania:

* Drugorzędne adresy e-mail należy zaktualizować, aby używały domeny `newcompanyname.com`. Nie chcemy aktualizować żadnych podstawowych adresów e-mail.

* Musimy używać operacji wyrażeń regularnych nieuwzględniających wielkości liter.

Skrypt ładowania

```
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
];
```

Wyniki

Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:

* `ID`

* `Emails`

Dodaj następujący wymiar wyliczany:

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

Tabela wynikowa

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

Określając wartość 2 dla argumentu occurrence, jesteśmy w stanie zaktualizować tylko drugie wystąpienie, które pasuje do wzorca wyrażenia regularnego.

## Dowiedz się więcej

* [Praca z wyrażeniami regularnymi w skryptach ładowania i wyrażeniach wykresu](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/regular-expressions-qlik-analytics.htm)