SubFieldRegEx(), sınırlayıcı olarak 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 SubFieldRegExI() varyantını kullanabilirsiniz.
İçinde normal ifade deseni aramak istediğiniz giriş dizesi metni.
regex_delimiter
Sınırlayıcı olarak kullanılacak normal ifadeyi içeren dize ifadesi. Aynı düzenli ifade kalıbında, | (dikey işlem) karakteriyle ayırarak birden fazla sınırlayıcı belirtebilirsiniz.
field_no
Ayıklamak istediğiniz alt bölümün numarasını belirten tam sayı değeri. Örneğin, dördüncü alt bölümü ayıklamak için 4 değerini belirtin. Bu, isteğe bağlı bir bağımsız değişkendir.
Aşağıdakiler, fonksiyonun bir komut dosyasında mı yoksa grafik ifadesinde mi kullanıldığına bakılmaksızın uygulanır:
field_no pozitif ise fonksiyon soldan sağa doğru eşleşmeleri tanımlayan bir değer döndürür.
field_no negatif ise fonksiyon sağdan sola doğru eşleşmeleri tanımlayan bir değer döndürür.
Fonksiyonu bir komut dosyasında kullanırken:
SubFieldRegEx() fonksiyonunu bir LOAD deyiminde kullanırsanız ve field_no atlanırsa fonksiyon, eşleşme sayısı kadar kayıt oluşturur.
SubFieldRegEx() kullanılarak birkaç alan yüklenirse ve hiçbiri bir field_no bağımsız değişkeni belirtmezse tüm kombinasyonların Kartezyen çarpımları oluşturulur.
Fonksiyonunu bir grafik ifadesinde kullanırken:
field_no atlanırsa varsayılan değer 1 olur.
Fonksiyon örnekleri
Örnek
Sonuç
SubFieldRegEx('a,b c;1 2,3',' |,|;', 1)
a döndürür. Bu örnekte, üç sınırlayıcı karakter belirtilmiştir (boşluk, virgül ve noktalı virgül).
SubFieldRegEx('a;b;c;1;2;3',';', 2)
b döndürür. Bu durumda, yalnızca bir sınırlayıcı karakter belirtilir (noktalı virgül).
SubFieldRegEx('a,b c;1 2,3',' |,|;', 4)
1 döndürür.
Ne zaman kullanılır?
Sınırlandırılmış bir listeden birden fazla ayrı değeri ayıklamak için SubFieldRegEx() kullanabilirsiniz. Örneğin, daha büyük bir doğal dil bloğu içinde virgülle ayrılmış bir listeniz varsa listedeki her bir değeri veri modelinizdeki yeni bir kayda ayırmak için bu fonksiyonu kullanabilirsiniz.
Örnek 1 - işleme göre etiketleri ayırtmak 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:
Başlangıçta işlem verilerini içeren bir tablo Transaction_By_Tag. Bu veriler, bireysel etiket değerlerini yeni kayıtlara ayıklamak için işlenir.
Ayıklanan etiket değerlerini saklamak için TransactionTag adında bir alan oluşturulur.
İşlem etiketlerini içeren alanda, birden fazla etiket sınırlayıcıyla ayrılmış metin dizeleri içinde yer alır. Sınırlayıcı aşağıdaki karakterlerden herhangi biri olabilir: , | ;
Komut dosyası
Transaction_By_Tag:
Load SubFieldRegEx(Tags, ',|;|\|') as TransactionTag,
* Inline [
ID Product Tags Amount
1 Product A Special order,Eligible for return,Warranty included 100.93
2 Product B Ineligible for return|No warranty available 51.11
3 Product C No warranty available 12.83
4 Product B Special order;Liquidation sale;Warranty included 209.48
] (delimiter is '\t');
drop fields Tags;
Sonuçlar
Verileri yükleyin ve bir sayfa açın. Yeni bir tablo oluşturun ve şu alanları boyut olarak ekleyin:
ID
Product
TransactionTag
Sonuçlar tablosu
ID
Product
TransactionTag
1
Product A
Eligible for return
1
Product A
Warranty included
1
Product A
Special order
2
Product B
No warranty available
2
Product B
Ineligible for return
3
Product C
No warranty available
4
Product B
Liquidation sale
4
Product B
Special order
4
Product B
Warranty included
Bu örnekte, bir komut dosyasında kullanıldığında, SubFieldRegEx() ile giriş dizesinde bulunan her eşleşme için ayrı bir satır döndürüldüğü gösterilmektedir.
Örnek 2 - etiketleri işleme göre ayırmak için grafik ifadeleri
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:
İşlem verilerini içeren bir tablo Transaction_By_Tag.
Bir işlemle ilişkili tüm etiketleri saklamak için metin dizeleri içeren bir alan, Tags.
Gereksinimlerimiz:
İşlem etiketlerini içeren alanda, birden fazla etiket sınırlayıcıyla ayrılmış metin dizeleri içinde yer alır. Sınırlayıcı aşağıdaki karakterlerden herhangi biri olabilir: , | ;
Her etiketi kendi alanına ayırmak için grafik ifadelerini kullanmak istiyoruz; bir işleme en fazla üç etiket eklemek mümkündür.
Komut dosyası
Transaction_By_Tag:
Load * Inline [
ID Product Tags Amount
1 Product A Special order, Eligible for return, Warranty included 100.93
2 Product B Ineligible for return | No warranty available 51.11
3 Product C No warranty available 12.83
4 Product B Special order;Liquidation sale;Warranty included 209.48
] (delimiter is '\t');
Sonuçlar
Verileri yükleyin ve bir sayfa açın. Yeni bir tablo oluşturun ve şu alanları boyut olarak ekleyin:
ID
Tags
Şu hesaplanan boyutları ekleyin:
=SubFieldRegEx(Tags, ',|;|\|', 1)
=SubFieldRegEx(Tags, ',|;|\|', 2)
=SubFieldRegEx(Tags, ',|;|\|', 3)
Sonuçlar tablosu
ID
Tags
=SubFieldRegEx(Tags, ',|;|\|', 1)
=SubFieldRegEx(Tags, ',|;|\|', 2)
=SubFieldRegEx(Tags, ',|;|\|', 3)
1
Special order, Eligible for return, Warranty included