# ExtractRegEx Komut dosyası ve grafik fonksiyonu

ExtractRegEx(), belirtilen normal ifade desenini kullanarak bir giriş dizesi ifadesinden metin çıkarır. Hiçbir eşleşme bulunamazsa fonksiyon null değer döndürür.

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 ExtractRegExI() varyantını kullanabilirsiniz.

Söz Dizimi:

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

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

Bağımsız Değişkenler

| Bağımsız Değişken | Açıklama |
| --- | --- |
| text | Dönüş değerinde çıkarılacak metni içeren dize ifadesi. |
| regex | Metni ayıklamak için kullanılacak normal ifade. |
| field\_no | Çıkarılacak eşleşmenin sayısı. Bu, metinde normal ifade için birden fazla eşleşme bulunabileceği durumlarda kullanışlıdır. Örneğin, dördüncü eşleşmeyi çıkarmak için `4` değerini belirtin. Bu, isteğe bağlı bir bağımsız değişkendir. Eşleşmelerin sırasını tersine çevirmek için negatif bir değer belirtin.<br><br>Aşağıdakiler, fonksiyonun bir komut dosyasında mı yoksa grafik ifadesinde mi kullanıldığına bakılmaksızın uygulanır:<br><br><ul> <li> <p><span>field_no</span> pozitif ise fonksiyon soldan sağa doğru eşleşmeleri tanımlayan bir değer döndürür.</p> </li> <li> <p><span>field_no</span> negatif ise fonksiyon sağdan sola doğru eşleşmeleri tanımlayan bir değer döndürür.</p> </li> </ul><br><br>Fonksiyonu bir komut dosyasında kullanırken:<br><br><ul> <li> <p><span>ExtractRegEx()</span> fonksiyonunu bir <span>LOAD</span> deyiminde kullanırsanız ve <span>field_no</span> atlanırsa fonksiyon, eşleşme sayısı kadar kayıt oluşturur.</p> </li> <li> <p><span>ExtractRegEx()</span> kullanılarak birkaç alan yüklenirse ve hiçbiri bir <span>field_no</span> bağımsız değişkeni belirtmezse tüm kombinasyonların Kartezyen çarpımları oluşturulur.</p> </li> </ul><br><br>Fonksiyonunu bir grafik ifadesinde kullanırken:<br><br><ul> <li> <p><span>field_no</span> atlanırsa varsayılan değer <code>1</code> olur.</p> </li> </ul> |

Fonksiyon örnekleri

| Örnek | Sonuç |
| --- | --- |
| `ExtractRegEx('a,b c;1 2,3','[a-z]\|[0-9]', 1)` | Bulunan ilk eşleşme olan `a` döndürür. |
| `ExtractRegEx('a,b c;1 2,3','[a-z]\|[0-9]', 2)` | Bulunan ikinci eşleşme olan `b` döndürür. |
| `ExtractRegEx('a,b c;1 2,3','[a-z]\|[0-9]', 4)` | Bulunan dördüncü eşleşme olan `1` döndürür. |
| `ExtractRegEx('abc','a\|b',-1)` | `b` döndürür. Negatif bir değer belirtildiğinde eşleşmeler tersten sayılır. |
| `ExtractRegEx('A,B C;1 2,3','[a-c]\|[4-9]')` | Boş bir değer döndürür çünkü ExtractRegEx() büyük/küçük harfe duyarlıdır ve büyük/küçük harfe duyarsız varyant kullanılmamıştır. |
| `ExtractRegExI('A,B C;1 2,3','[a-c]\|[4-9]')` | `A` döndürür çünkü büyük/küçük harfe duyarlı olmayan ExtractRegExI() değişkeni kullanılmıştır. |

## ExtractRegEx ne zaman kullanılmalı?

Başka bilgiler de içerebilecek verilerden (örneğin, serbest metin veya JSON dizeleri) ayırmak istediğiniz bilgileri ayıklamak için Extract RegEx() kullanabilirsiniz. Örnek:

* Metinden e-posta adreslerini, telefon numaralarını, hesap numaralarını ve diğer bilgileri ayıklayın.

* Metinden sayısal değerleri (örneğin, para birimi) ayıklayın.

* Metin veya sayısal verilerin biçimlendirmesini standartlaştırın.

## Örnek 1 - JSON'dan e-posta adreslerini ayıklamak için komut dosyası

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

#### Yükleme kodu 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:

* `OrderJson` alanı içeren bir `OrderDetails` tablosu.

* `OrderJson` alanı, sipariş verilerini içeren bir JSON dizesi içerir. Girinti ve satır sonları gibi biçimlendirmeler JSON'dan kaldırılmıştır. Sipariş verileri, ayrı değerler halinde ayıklamak istediğimiz e-posta adreslerini içerir.

* `OrderDetails` sonrasında yüklenen yeni bir tablo `EmailAddresses`. `EmailAddresses` LOAD deyiminde, `OrderDetails` tablosundan `OrderJson` alanını yükleriz ve çıkarılan e-posta adreslerini içeren yeni bir hesaplanan alan, `Email`, oluştururuz. `OrderDetails` daha sonra bırakılır.

Gereksinimlerimiz:

* Belirli bir etki alanındaki e-posta adresleri: `example.com`.

* Herhangi bir sayıda alfanümerik karakterin yanı sıra tanımlanmış bir dizi özel karakter içeren e-posta adresleri.

Komut dosyası

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

Sonuçlar

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

* `Email`

Sonuçlar tablosu

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

field\_no için bir bağımsız değişken değeri belirtilmediğinde tüm eşleşmeler otomatik olarak ayrı değerler halinde ayıklanır.

## Örnek 2 - para birimi tutarlarından sayısal değerleri ayıklamak için komut dosyası

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

#### Yükleme kodu 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:

* Satış verilerini içeren bir tablo `Sales`.

* `Sales` tablosunda, USD cinsinden işlem tutarlarını içeren `Amount` adlı bir alan. Bu tutarlar, para birimi sembolleri ve kodları içeren dizeler olarak ifade edilir.

* Her bir tutarı tamamen sayısal bir değere dönüştüren `Sales`, `OrderAmountNumeric_USD` içindeki özel bir alanın tanımı. Grafik toplamalarında kullanabilmemiz için bu verilerin sayısal formda olması gerekir.

Komut dosyası

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

Sonuçlar

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

* `OrderID`

* `Amount`

* `OrderAmountNumeric_USD`

Sonuçlar tablosu

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

## Örnek 3 - JSON'dan e-posta adreslerini ayıklamak için grafik ifadeleri

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

#### Grafik ifadeleri 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:

* `OrderJson` alanı içeren bir `OrderDetails` tablosu.

* `OrderJson` alanı, sipariş verilerini içeren bir JSON dizesi içerir. Girinti ve satır sonları gibi biçimlendirmeler JSON'dan kaldırılmıştır. Sipariş verileri, ayrı değerler halinde ayıklamak istediğimiz e-posta adreslerini içerir.

Gereksinimlerimiz:

* Belirli bir etki alanındaki e-posta adresleri: `example.com`.

* Herhangi bir sayıda alfanümerik karakterin yanı sıra tanımlanmış bir dizi özel karakter içeren e-posta adresleri.

Komut dosyası

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

Sonuçlar

Verileri yükleyin ve bir sayfa açın. Bir tablo oluşturun ve aşağıdaki ifadelerden her biri hesaplanan boyutu olarak ekleyin:

* `=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)`

Sonuçlar tablosu

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

## Daha fazla bilgi

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