# ReplaceRegEx Skript- och diagramfunktion

ReplaceRegEx() returnerar en sträng efter att ha ersatt en eller flera matchningar mellan en indatasträng och ett angivet reguljärt uttrycksmönster. Den text som ersätter den matchande texten anges i argumentet to\_str. Funktionen går från vänster till höger, men om du anger ett negativt värde för occurrence läses funktionen från höger till vänster.

Den här funktionen utför regexoperationer som är skiftlägeskänsliga. Alternativt kan du använda varianten ReplaceRegExI() för att utföra skiftlägesokänsliga regexoperationer.

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

Syntax:

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

Returnerad datatyp: sträng

Argument

| Argument | Beskrivning |
| --- | --- |
| text | Den text i indatasträngen som du vill ersätta, helt eller delvis, med den nya texten från to\_str. |
| regex | Det reguljära uttryck som definierar när text ska ersättas. Matchningar mellan detta argument och text-argumentet ersätts. |
| to\_str | Den nya texten som du vill använda för att ersätta befintligt innehåll från text. |
| occurrence | Numret på matchningen (mellan inmatad text och reguljärt uttryck) som ska ersättas med ny text.<br><br>Det här är ett valfritt argument. Standardvärdet är 0 om det utelämnas. När värdet 0 används, eller om argumentet utelämnas, ersätts alla matchningar mellan text och regex med to\_str.<br><br>Du kan ange ett negativt värde för occurrence för att hitta matchningar från höger till vänster. |

Exempel på funktioner

| Exempel | Resultat |
| --- | --- |
| `ReplaceRegEx('abc123','[0-9]','x')` | Returnerar `abcxxx`. I det här exemplet ersätts all text från indatasträngen som matchar regexmönstret med den nya texten. |
| `ReplaceRegEx('abc123','[0-9]','x',1)` | Returnerar `abcx23`. Endast den första förekomsten av en matchning mellan indatasträngen och regexmönstret ersätts. |
| `ReplaceRegEx('abc123','[0-9]','x',4)` | Returnerar `abc123`. Det finns bara tre möjliga matchningar mellan indatasträngen och regexmönstret, så ingen ändring utförs. |
| `ReplaceRegEx('ABC123','[a-c]','5')` | Returnerar `ABC123`. Ingen ändring görs eftersom ReplaceRegEx() är skiftlägeskänsligt och den skiftlägesokänsliga varianten inte används. |
| `ReplaceRegExI('ABC123','[a-c]','5')` | Returnerar `555123`. Den skiftlägesokänsliga varianten av funktionen, ReplaceRegExI(), används. |

## När ska du använda ReplaceRegEx

Du kan använda ReplaceRegEx() för att ändra text så att den uppfyller formaterings- och efterlevnadsstandarder, särskilt när det finns komplexa mönster i dina data. Du kan t.ex. formatera om telefonnummersträngar så att endast numeriska värden inkluderas.

Vid behov kan du också använda den här funktionen för att maskera känslig information, t.ex. personliga identitetsuppgifter (PII), så att den inte visas för användare som analyserar din applikation.

## Exempel 1 – laddningsskript för att uppdatera anställdas e-postadresser

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

#### Laddningsskript och resultat

Översikt

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En tabell `Employees` som innehåller e-postadresserna till de anställda i en organisation.

* Skapande av ett nytt fält, `Email_Updated`, för att utföra en sök- och ersättningsoperation på värden i fältet `Email_Original`.

Efter att företaget har bytt namn har alla e-postadresser uppdaterats för att återspegla det nya namnet.

Våra krav:

* Konvertera alla domänreferenser från `test.com` till `newcompanyname.com`.

* Vi måste använda regexoperationer utan skiftlägeskänslighet.

Laddningsskript

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

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:

* `ID`

* `Email_Original`

* `Email_Updated`

Resultattabell

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

## Exempel 2 – laddningsskript för att formatera ISBN-koder

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

#### Laddningsskript och resultat

Översikt

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* Variabler `ISBN_13` och `ISBN_10`, som lagrar de reguljära uttryck som ska användas för 13-siffriga respektive 10-siffriga ISBN-strängmönster.

* En tabell `Employees` som innehåller numeriska råvärden för ISBN-bokkoder. Tabellen innehåller både 13-siffriga och 10-siffriga ISBN-nummer.

* Flera operationer för att extrahera varje del av ett ISBN och sedan returnera en sträng som visar hela koden i det förväntade standardformatet. Vi använder en kombination av ReplaceRegEx(), MatchRegEx(), ExtractRegExGroup() och Pick().

Våra krav:

* Vi vill formatera siffrorna till mer läsbar text med hjälp av den standardiserade formateringen:

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

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

Laddningsskript

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

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till det här fältet som en dimension:

* `ISBN_Formatted`

Resultattabell

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

## Exempel 3 – diagramuttryck för att uppdatera sekundära e-postadresser

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

#### Diagramuttryck och resultat

Översikt

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En tabell `Employees` som innehåller e-postadresserna till de anställda i en organisation. Dessa lagras i en enda sträng för varje anställd, i vilken flera e-postadresser lagras.

Våra krav:

* Sekundära e-postadresser måste uppdateras så att de använder domänen `newcompanyname.com`. Vi vill inte uppdatera några primära e-postadresser.

* Vi måste använda regexoperationer utan skiftlägeskänslighet.

Laddningsskript

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

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:

* `ID`

* `Emails`

Lägg till följande beräknade dimension:

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

Resultattabell

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

Genom att ange värdet 2 för argumentet occurrence kan vi uppdatera enbart den andra förekomsten som matchar regexmönstret.

## Mer information

* [Arbeta med reguljära uttryck i laddningsskript och diagramuttryck](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/regular-expressions-qlik-analytics.htm)