# IndexRegEx - kod ve grafik fonksiyonu

IndexRegEx(), giriş dizesini arar ve belirtilen normal ifade deseninin n. oluşunun başlangıç konumunu döndürür. İsteğe bağlı üçüncü bir bağımsız değişken count n değerini sağlar; atlanması halinde bu 1 olur. Dizedeki konumlar soldan sağa doğru 1'den başlayıp artarak numaralandırılır. Eşleşme bulunamazsa fonksiyon 0 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 IndexRegExI() varyantını kullanabilirsiniz.

Söz Dizimi:

IndexRegEx (text, regex [, count])

Dönüş verileri türü: tamsayı

Bağımsız Değişkenler

| Bağımsız Değişken | Açıklama |
| --- | --- |
| text | İçinde normal ifade aramak istediğiniz giriş dizesi metni. |
| regex | Giriş dizesini aramak için kullanılacak normal ifade. |
| count | 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şmenin konumunu çıkarmak için `4` değerini belirtin.<br><br>Bu, isteğe bağlı bir bağımsız değişkendir. Belirtilmediği takdirde varsayılan değer 1 olur. Eşleşmeleri sağdan sola doğru aramak için negatif bir değer belirtebilirsiniz. |

Fonksiyon örnekleri

| Örnek | Sonuç |
| --- | --- |
| `IndexRegEx('abc123','[a-z][0-9]+')` | `3` (ilk eşleşmenin başlangıç konumu) döndürür. |
| `IndexRegEx('abc123','[a-z][0-9]+',2)` | `0` (regex'in ikinci bir eşleşmesi yoktur) döndürür. |
| `IndexRegEx('ABC123','[a-z][0-9]+')` | `0` döndürür, çünkü IndexRegEx() büyük/küçük harfe duyarlıdır. |
| `IndexRegExI('ABC123','[a-z][0-9]+')` | `3` döndürür. IndexRegExI() fonksiyonunun büyük/küçük harfe duyarsız varyantı kullanılır. |

## Ne zaman kullanılır?

Bu fonksiyon için kullanım durumları şunları içerir:

* Belirli metin kalıplarının daha büyük metin gövdeleri içinde nerede ortaya çıktığını belirleme. Örneğin, bir e-posta adresi kalıbının bir dizi uzun e-posta iletisinde nerede kullanıldığını bilmek isteyebilirsiniz.

* IndexRegEx() özellikle gelişmiş veri işleme için kullanışlıdır ve genellikle daha uzun, daha karmaşık bir dönüşümün ilk adımında kullanılır. Sorunları ExtractRegEx(), MatchRegEx() ve CountRegEx() gibi diğer regex fonksiyonlarıyla çözmek genellikle daha kolaydır, ancak bazen IndexRegEx(), bu fonksiyonların sağlayamadığı çözümler sunabilir.

## Örnek 1 - ISBN'ye göre kitapları tanımlamak için komut dosyası

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/IndexRegEx.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:

* `EmailBody` adlı bir alanda e-posta mesajı içeriği barındıran bir tablo `ISBN`.

E-posta mesajındaki doğal dilden tüm 13 basamaklı ISBN kodlarının konumlarını bulmak istiyoruz.

Komut dosyası

```
SET ISBN_RegEx = 'ISBN[ ]*([0-9]{3})-([0-9]{1})-([0-9]{4})-([0-9]{4})-([0-9]{1})';

ISBN:
LOAD IndexRegEx(EmailText,'$(ISBN_RegEx)',1) AS ISBNCode1,
IndexRegEx(EmailText,'$(ISBN_RegEx)',2) AS ISBNCode2,
IndexRegEx(EmailText,'$(ISBN_RegEx)',3) AS ISBNCode3,
* INLINE `
EmailText
Hi there! I have some books that I'm interested in ordering from your distribution center. Just wanted to make sure they were in stock before I put the order in on the system - do you think you could tell me whether you have these in stock, and how many you might be able to ship us? Thanks! Item 1: ISBN 123-3-1234-1234-0. This is one I've had a really hard time getting a hold of lately. Do you think you would have 5 in stock? If not, can I put a hold on the next 5 you get? Item 2: ISBN 012-2-0123-0123-4 ... This one is not high-priority, but if you have one, I'll take it! Item 3: ISBN 000-1-0123-0123-2. Customers have been requesting this one for a long time, and we haven't had it in stock for years due to it being out of print. Any chance you might have 7 of them? Thanks!
` (delimiter is '/t/';
```

Sonuçlar

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

* `ISBNCode1`

* `ISBNCode2`

* `ISBNCode3`

Sonuçlar tablosu

| ISBNCode1 | ISBNCode2 | ISBNCode3 |
| --- | --- | --- |
| 301 | 487 | 588 |

## Örnek 2 - ikincil telefon numaralarına sahip kişileri tanımlamak için grafik ifadesi

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/IndexRegEx.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:

* Şirketler hakkında her bir şirketin web sitesinde bulunan bilgileri içeren `BusinessContactInfo` adlı bir tablo.

* `ContactInfo`, şirket telefon numaralarını içeren bir alandır. Hangi şirketlerin birden fazla telefon numarasına sahip olduğunu belirlemek istiyoruz.

Gereksinimlerimiz:

* Telefon numaraları 10 haneli NANP telefon numaraları olmalıdır.

* Alan kodunun parantez içine alınmasına izin vermek istiyoruz.

* Bir telefon numarasının her bir segmenti arasında tek bir boşluğa veya kısa çizgiye izin vermek istiyoruz.

Komut dosyası

```
BusinessContactInfo:

Load * Inline `
ID	CompanyName	ContactInfo
1	Company A	(123) 456-7890 (023) 123-4567
2	Company B	0123456790 1357913579 0246802468
3	Company C	234-567-8901

` (delimiter is '\t');
```

Sonuçlar

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

* `CompanyName`

Bu hesaplanan boyutu tabloya ekleyin:

```
=if(IndexRegEx(ContactInfo, '\({0,1}[0-9]{3}\){0,1}[ -]{0,1}[0-9]{3}[ -]{0,1}[0-9]{4}', 2)=0, 'No secondary phone number(s)', 'Has secondary phone number(s)')
```

Sonuçlar tablosu

| CompanyName | =if(IndexRegEx(ContactInfo, '\({0,1}[0-9]{3}\){0,1}[ -]{0,1}[0-9]{3}[ -]{0,1}[0-9]{4}', 2)=0, 'No secondary phone number(s)', 'Has secondary phone number(s)') |
| --- | --- |
| Company A | Has secondary phone number(s) |
| Company B | Has secondary phone number(s) |
| Company C | No secondary phone number(s) |

`Company A`, bir ikincil telefon numarası vardır. `Company B`, iki ikincil telefon numarası vardır. `Company C`, üç ikincil telefon numarası vardır.

Bilgi notuMatchRegEx() fonksiyonu bu tür doğrulama kullanım durumları için de kullanışlıdır.

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