# ReplaceRegEx - kod ve grafik fonksiyonu

ReplaceRegEx(), bir giriş dizesi ile belirtilen normal ifade deseni arasındaki bir veya daha fazla eşleşmeyi değiştirdikten sonra bir dize döndürür. Eşleşen metnin yerini alan metin, to\_str bağımsız değişkeninde belirtilir. Fonksiyon soldan sağa doğru çalışır, ancak negatif bir occurrence değeri belirtirseniz fonksiyonlar sağdan sola doğru okur.

Bu fonksiyon, büyük/küçük harfe duyarlı regex işlemleri gerçekleştirir. Büyük/küçük harfe duyarlı olmayan regex işlemleri gerçekleştirmek için alternatif olarak ReplaceRegExI() varyantını kullanabilirsiniz.

Söz Dizimi:

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

Dönüş verileri türü: dize

Bağımsız Değişkenler

| Bağımsız Değişken | Açıklama |
| --- | --- |
| text | Tamamen veya kısmen to\_str kaynağından yeni metinle değiştirmek istediğiniz giriş dizesi metni. |
| regex | Metnin ne zaman değiştirileceğini tanımlayan normal ifade. Bu bağımsız değişken ile text bağımsız değişkeni arasındaki eşleşmeler değiştirilir. |
| to\_str | text kaynağından mevcut içeriği değiştirmek için kullanmak istediğiniz yeni metin. |
| occurrence | Yeni metinle değiştirilecek eşleşmenin numarası (giriş metni ile düzenli ifade arasında).<br><br>Bu, isteğe bağlı bir bağımsız değişkendir. Atlandığı takdirde varsayılan değer 0 olur. 0 değeri kullanıldığında veya bağımsız değişken atlandığında text ve regex arasındaki tüm eşleşmeler to\_str ile değiştirilir.<br><br>Eşleşmeleri sağdan sola doğru tanımlamak istiyorsanız occurrence için negatif bir değer belirtebilirsiniz. |

Fonksiyon örnekleri

| Örnek | Sonuç |
| --- | --- |
| `ReplaceRegEx('abc123','[0-9]','x')` | `abcxxx` döndürür. Bu örnekte, giriş dizesindeki regex deseniyle eşleşen tüm metin yeni metinle değiştirilir. |
| `ReplaceRegEx('abc123','[0-9]','x',1)` | `abcx23` döndürür. Girdi dizesi ile regex deseni arasındaki eşleşmenin yalnızca ilk oluşumu değiştirilir. |
| `ReplaceRegEx('abc123','[0-9]','x',4)` | `abc123` döndürür. Girdi dizesi ile regex deseni arasında yalnızca üç olası eşleşme vardır, bu nedenle herhangi bir değişiklik yapılmaz. |
| `ReplaceRegEx('ABC123','[a-c]','5')` | `ABC123` döndürür. ReplaceRegEx(), büyük/küçük harfe duyarlı olduğundan ve büyük/küçük harfe duyarsız varyant kullanılmadığından herhangi bir değişiklik yapılmaz. |
| `ReplaceRegExI('ABC123','[a-c]','5')` | `555123` döndürür. ReplaceRegExI() fonksiyonunun büyük/küçük harfe duyarsız varyantı kullanılır. |

## Ne zaman kullanılır?

Özellikle verilerde karmaşık desenler olduğunda, biçimlendirme ve uyumluluk standartlarını karşılamak üzere metni değiştirmek için ReplaceRegEx() kullanabilirsiniz. Örneğin, telefon numarası dizelerini yalnızca sayısal değerler içerecek şekilde yeniden biçimlendirebilirsiniz.

Gerekirse bu fonksiyonu, uygulamanızı analiz eden kullanıcılara gösterilmemesi adına kişisel tanımlanabilir bilgiler (PII) gibi hassas bilgileri gizlemek için de kullanabilirsiniz.

## Örnek 1 - Çalışanların e-posta adreslerini güncellemek için komut dosyası yükleme

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

#### Komut dosyası ve sonuçlar

Genel bakış

Veri yükleme düzenleyicisini açın ve aşağıdaki komut dosyasını yeni bir bölüme ekleyin.

Komut dosyası şunları içerir:

* Bir kuruluşun çalışanlarının e-posta adreslerini içeren bir tablo `Employees`.

* `Email_Original` alanındaki değerler üzerinde bir bul ve değiştir işlemi gerçekleştirmek için `Email_Updated` adında yeni bir alan oluşturulması.

Şirket adını değiştirdikten sonra tüm e-posta adresleri yeni adı yansıtacak şekilde güncellenmiştir.

Gereksinimlerimiz:

* `test.com` tüm etki alanı referanslarını `newcompanyname.com` dönüştürün.

* Büyük/küçük harfe duyarlı olmayan regex işlemleri kullanmamız gerekir.

Komut dosyası

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

Sonuçlar

Verileri yükleyin ve bir sayfa açın. Yeni bir tablo oluşturun ve şu alanları boyut olarak ekleyin:

* `ID`

* `Email_Original`

* `Email_Updated`

Sonuçlar tablosu

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

## Örnek 2 - ISBN kodlarını biçimlendirmek için komut dosyası yükleme

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

#### Komut dosyası ve sonuçlar

Genel bakış

Veri yükleme düzenleyicisini açın ve aşağıdaki komut dosyasını yeni bir bölüme ekleyin.

Komut dosyası şunları içerir:

* Değişkenleri `ISBN_13` ve `ISBN_10`, sırasıyla 13 basamaklı ve 10 basamaklı ISBN dize kalıpları için kullanılacak düzenli ifadeleri depolar.

* ISBN kitap kodları için ham sayısal değerleri içeren bir tablo `Employees`. Tablo hem 13 basamaklı hem de 10 basamaklı ISBN'leri içermektedir.

* ISBN'nin her bir parçasını ayıklamak için birkaç işlem ve ardından tüm kodu standart, beklenen biçimde gösteren bir dize döndürür. Bir ReplaceRegEx(), MatchRegEx(), ExtractRegExGroup() ve Pick() kombinasyonu kullanıyoruz.

Gereksinimlerimiz:

* Standartlaştırılmış biçimlendirmeyi kullanarak sayıları daha okunabilir bir metin haline getirmek istiyoruz:

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

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

Komut dosyası

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

Sonuçlar

Verileri yükleyin ve bir sayfa açın. Yeni bir tablo oluşturun ve şu alanı boyut olarak ekleyin:

* `ISBN_Formatted`

Sonuçlar tablosu

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

## Örnek 3 - ikincil e-posta adreslerini güncellemek için grafik ifadesi

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

#### Grafik ifadesi ve sonuçlar

Genel bakış

Veri yükleme düzenleyicisini açın ve aşağıdaki komut dosyasını yeni bir bölüme ekleyin.

Komut dosyası şunları içerir:

* Bir kuruluşun çalışanlarının e-posta adreslerini içeren bir tablo `Employees`. Bunlar, her çalışan için birden fazla e-posta adresinin depolandığı tek bir dizede saklanır.

Gereksinimlerimiz:

* İkincil e-posta adreslerinin `newcompanyname.com` alan adını kullanacak şekilde güncellenmesi gerekir. Herhangi bir birincil e-posta adresini güncellemek istemiyoruz.

* Büyük/küçük harfe duyarlı olmayan regex işlemleri kullanmamız gerekir.

Komut dosyası

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

Sonuçlar

Verileri yükleyin ve bir sayfa açın. Yeni bir tablo oluşturun ve şu alanları boyut olarak ekleyin:

* `ID`

* `Emails`

Aşağıdaki hesaplanan boyutu ekleyin:

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

Sonuçlar tablosu

| 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 bağımsız değişkeni için 2 değerini belirleyerek, yalnızca regex deseniyle eşleşen ikinci örneği güncelleyebiliyoruz.

## Daha fazla bilgi

* [Komut dosyalarında ve grafik ifadelerinde normal ifadelerle çalışma](https://help.qlik.com/tr-TR/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/regular-expressions-qlik-analytics.htm)