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.
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ı
Genel bakış
Veri yükleme düzenleyicisini açın ve aşağıdaki yükleme kodunu yeni bir sekmeye ekleyin.
Yükleme kodu ş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
Genel bakış
Veri yükleme düzenleyicisini açın ve aşağıdaki yükleme kodunu yeni bir sekmeye ekleyin.
Yükleme kodu ş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: