ExtractRegExGroup(), belirtilen birleşik normal ifade desenini kullanarak bir giriş dizesi ifadesinden metin çıkarır. Fonksiyonu kullanırken, bileşik regex içinde kullanılacak grubu belirtin. Hiçbir eşleşme bulunamazsa fonksiyon null değer döndürür.
ExtractRegExGroup() işlevini bir LOAD deyiminde kullanırsanız ve field_no atlanırsa, işlev birden fazla kayıt döndürür. ExtractRegExGroup() kullanılarak birkaç alan yüklenirse tüm kombinasyonların Kartezyen çarpımları oluşturulur.
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 ExtractRegExGroupI() varyantını kullanabilirsiniz.
Söz Dizimi:
ExtractRegExGroup
(text, regex, group [, 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.
group
Bileşik normal ifade olması durumunda, grubun numarası.
Normal ifade yalnızca bir grup içeriyorsa bunun yerine ExtractRegEx() fonksiyonunu kullanın. Alternatif olarak, ExtractRegExGroup() öğesini group değeri 0 olacak şekilde kullanın.
Eşleşmeleri sağdan sola doğru aramak için negatif bir group değeri belirtebilirsiniz.
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. Belirtilmediği takdirde varsayılan değer 1 olur.
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 - işlem kodlarını ayrıştırmak 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:
İşlemler hakkında bilgi içeren Transactions adlı bir tablo. Belirli ayrıntılar aşağıdaki söz dizimi kullanılarak işlem kodlarıyla yakalanır:
İşlem yılı-İşlem kaynağı (yani çevrimiçi veya mağazadan satın alma)-İlişkili dağıtım merkezi
Her ayrıntıyı ayıklamak için her biri aynı bileşik normal ifadeyi yeniden kullanan birkaç yeni alan oluşturulması.
Gereksinimlerimiz:
Yıl, dört sayının herhangi bir kombinasyonu olabilir.
ONLINE ve INSTORE değerleri, işlem kaynağı için kabul edilebilir tek değerlerdir.
Dağıtım merkezinde tam olarak beş sayı bulunmalıdır.
Komut dosyası
Transactions:
Load
recno() as RecordID,
ExtractRegExGroup(TransactionCode,'([0-9]{4})-(ONLINE|INSTORE)-([0-9]{5})',0) as TransactionCode_Unparsed,
ExtractRegExGroup(TransactionCode,'([0-9]{4})-(ONLINE|INSTORE)-([0-9]{5})',1) as TransactionYear,
ExtractRegExGroup(TransactionCode,'([0-9]{4})-(ONLINE|INSTORE)-([0-9]{5})',2) as TransactionSource,
ExtractRegExGroup(TransactionCode,'([0-9]{4})-(ONLINE|INSTORE)-([0-9]{5})',3) as TransactionDC,
* Inline `
TransactionCode, Category
2025-ONLINE-60019, Product A
2024-INSTORE-60020, Product B
2025-ONLINE-60018, Product C
2024-ONLINE-60020, Product A
2025-INSTORE-60019, Product B
2025-ONLINE-60017, Product D
`;
Sonuçlar
Verileri yükleyin ve bir sayfa açın. Yeni bir tablo oluşturun ve şu alanları boyut olarak ekleyin:
RecordID
TransactionCode
TransactionCode_Unparsed
TransactionYear
TransactionSource
TransactionDC
Sonuçlar tablosu
RecordID
TransactionCode
TransactionCode_Unparsed
TransactionYear
TransactionSource
TransactionDC
1
2025-ONLINE-60019
2025-ONLINE-60019
2025
ONLINE
60019
2
2024-INSTORE-60020
2024-INSTORE-60020
2024
INSTORE
60020
3
2025-ONLINE-60018
2025-ONLINE-60018
2025
ONLINE
60018
4
2024-ONLINE-60020
2024-ONLINE-60020
2024
ONLINE
60020
5
2025-INSTORE-60019
2025-INSTORE-60019
2025
INSTORE
60019
6
2025-ONLINE-60017
2025-ONLINE-60017
2025
ONLINE
60017
Bu sonuçlar, group bağımsız değişkeninin tek bir regex'i birden fazla işlem için yeniden kullanmanıza nasıl izin verdiğini vurgulamaktadır. group değerini 0 olarak kullanan TransactionCode_Unparsed alanı bu durumda herhangi bir ek değer sağlamaz, ancak fonksiyonu göstermek amacıyla burada gösterilmiştir.
Örnek 2 - işletme iletişim bilgilerini ayıklamak 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:
Şirketler hakkında her bir şirketin web sitesinde bulunan bilgileri içeren BusinessContactInfo adlı bir tablo.
ContactInfo, şirket e-posta adresleri ve telefon numaraları dahil olmak üzere serbest metin içeren bir alandır.
Her ayrıntıyı ayıklamak için her biri aynı bileşik normal ifadeyi yeniden kullanan birkaç yeni alan oluşturulması.
Gereksinimlerimiz:
E-posta adresleri belirli bir dizi gereksinimi ve söz dizimini karşılamalıdır.
Telefon numaraları 10 haneli NANP telefon numaraları olmalıdır. Alan kodunun parantez içine alınmasına ve belirli noktalarda boşluk ve tire işaretlerine izin vermek istiyoruz.
Komut dosyası
BusinessContactInfo:
Load
ExtractRegExGroupI(ContactInfo, '([a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']{1,50}\.[a-zA-Z0-9!#$%^&*\-_+=~{|}\/.'']{1,50})|(\({0,1}[0-9]{3}\){0,1}[ -]*[0-9]{3}[ -]*[0-9]{4})',1,1) as CompanyEmail,
ExtractRegExGroupI(ContactInfo, '([a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']+@[a-zA-Z0-9!#$%^&*-_+=~{|}\/.'']{1,50}\.[a-zA-Z0-9!#$%^&*\-_+=~{|}\/.'']{1,50})|(\({0,1}[0-9]{3}\){0,1}[ -]*[0-9]{3}[ -]*[0-9]{4})',2,2) as CompanyPhoneNum,
* Inline `
ID CompanyName ContactInfo
1 Company A Email is: Company1@example.com, Phone number is: (123) 456-7890
2 Company B Email is: company2@test.com, Phone # is: 0123456790
3 Company C Email is: company3@placeholder.com, Phone no. is: 234-567-8901
` (delimiter is '\t');
Sonuçlar
Verileri yükleyin ve bir sayfa açın. Yeni bir tablo oluşturun ve şu alanları boyut olarak ekleyin:
CompanyName
CompanyEmail
CompanyPhoneNum
Sonuçlar tablosu
CompanyName
CompanyEmail
CompanyPhoneNum
Company A
Company1@example.com
(123) 456-7890
Company B
company2@test.com
0123456790
Company C
company3@placeholder.com
234-567-8901
Aynı bileşik normal ifade, farklı bilgileri almak için yeniden kullanılır. group bağımsız değişkeni, normal ifadenin iki grubundan hangisinin aranacağını belirtir ve field_no bağımsız değişkeni, bulmak istediğimiz genel eşleşmeyi (tüm dize boyunca) belirtir.
Fonksiyonun ExtractRegEGroupxI() varyantı büyük/küçük harfe duyarsız arama yapılmasını sağlar.
Örnek 3 - ISBN kodlarından bileşenleri çıkarmak 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:
Tüm ayıklamalar için kullanmak istediğimiz düzenli ifadeyi saklamak üzere ISBN_RegExdeğişkeninin oluşturulması.
Bir kitap mağazasının çeşitli tedarikçilerden sipariş etmek istediği kitaplar için ISBN kodları kümesi.
Her bir ISBN kodundan aşağıdakileri çıkarmamız gerekiyor:
EAN
Grup
Tescil Eden
Yayın
Checksum
Komut dosyası
SET ISBN_RegEx = 'ISBN[ ]*([0-9]{3})-([0-9]{1})-([0-9]{4})-([0-9]{4})-([0-9]{1})';
ISBN:
LOAD Supplier,
ExtractRegExGroup(Books,'$(ISBN_RegEx)',1) AS EAN,
ExtractRegExGroup(Books,'$(ISBN_RegEx)',2) AS Group,
ExtractRegExGroup(Books,'$(ISBN_RegEx)',3) AS Registrant,
ExtractRegExGroup(Books,'$(ISBN_RegEx)',4) AS Publication,
ExtractRegExGroup(Books,'$(ISBN_RegEx)',5) AS Checksum;
// Split the ISBN with the Group function in a preceding load to avoid generating a cartesian product
LOAD *,
ExtractRegEx(SupplierBooks, '$(ISBN_RegEx)') AS Books
INLINE [
Supplier, SupplierBooks
Supplier 1, ISBN 123-3-1234-1234-0 ISBN 012-2-0123-0123-4 ISBN 000-1-0123-0123-2 ISBN 234-5-2345-2345-1 ISBN 555-2-5555-5555-3 ISBN 222-4-2222-2222-2
Supplier 2, ISBN 000-0-3333-3333-3 ISBN 333-3-3333-3333-3 ISBN 555-1-5151-5151-3 ISBN 232-1-2323-2323-1 ISBN 008-0-7777-7777-3 ISBN 888-0-9999-0000-0
];
Sonuçlar
Verileri yükleyin ve bir sayfa açın. Yeni bir tablo oluşturun ve şu alanları boyut olarak ekleyin:
Supplier
EAN
Group
Registrant
Publication
Checksum
Sonuçlar tablosu
Supplier
EAN
Group
Registrant
Publication
Checksum
Supplier 1
000
1
0123
0123
2
Supplier 1
012
2
0123
0123
4
Supplier 1
123
3
1234
1234
0
Supplier 1
222
4
2222
2222
2
Supplier 1
234
5
2345
2345
1
Supplier 1
555
2
5555
5555
3
Supplier 2
000
0
3333
3333
3
Supplier 2
008
0
7777
7777
3
Supplier 2
232
1
2323
2323
1
Supplier 2
333
3
3333
3333
3
Supplier 2
555
1
5151
5151
3
Supplier 2
888
0
9999
0000
0
Örnek 4 - iş irtibat bilgilerini ayıklamak için grafik ifadeleri (ExtractRegEx() karşılaştırması ile)
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 e-posta adresleri ve telefon numaraları dahil olmak üzere serbest metin içeren bir alandır. Her bir e-posta adresini ve telefon numarasını grafik ifadeleri ile ayıklamak istiyoruz.
Gereksinimlerimiz:
E-posta adresleri belirli bir dizi gereksinimi ve söz dizimini karşılamalıdır.
Telefon numaraları 10 haneli NANP telefon numaraları olmalıdır. Alan kodunun parantez içine alınmasına ve belirli noktalarda boşluk ve tire işaretlerine izin vermek istiyoruz.
Komut dosyası
BusinessContactInfo:
Load * Inline `
ID CompanyName ContactInfo
1 Company A Email is: Company1@example.com, Phone number is: (123) 456-7890
2 Company B Email is: company2@test.com, Phone # is: 0123456790
3 Company C Email is: company3@placeholder.com, Phone no. is: 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:
Aynı bileşik normal ifade, farklı bilgileri almak için yeniden kullanılır. group bağımsız değişkeni, normal ifadenin iki grubundan hangisinin aranacağını belirtir ve field_no bağımsız değişkeni, bulmak istediğimiz genel eşleşmeyi (tüm dize boyunca) belirtir.
Fonksiyonun ExtractRegEGroupI() varyantı büyük/küçük harfe duyarsız arama yapılmasını sağlar.
Örnek 5 - URL ayrıştırma (ExtractRegEx() karşılaştırması ile)
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ı metni içeren Correspondence adlı bir tablo.
Web URL'leri içeren e-posta mesajı içeriği.
Varsa ikinci URL'yi aşağıdaki bileşenlere ayıklamak istiyoruz:
Tam URL
Protokol
Etki Alanı
Yol
Tüm ayıklama işlemlerini kontrol etmek için tek bir düzenli ifade kullanmak istiyoruz.
Komut dosyası
Correspondence:
Load * Inline `
ID EmailBody
1 Thanks again for this morning's meeting! You can find the meeting minutes posted here: https://example.com/resourceexample. If you still have any questions, always feel free to ask me or one of the other team members. Here are a few learning resources that might help you: http://www.example.ca/training1.pptx http://www.example.ca/training2.pptx http://www.example.ca/training3.pptx Thanks again!
2 Hi, you'll want to visit our company website for that, it's available at https://www.example.se.
3 Hello all, I just wanted to let you know that our online stores are now up and running! I couldn't be more excited. We are already seeing quite a bit of traffic and volume sold, which is very promising! For Product A, go to https://www.examplestore1.com/products. For Product B, you'll want go to https://www.examplestore2.com/products. Product C, go check out https://www.examplestore3.com/products. Cheers!
` (delimiter is '\t');
Sonuçlar
Verileri yükleyin ve bir sayfa açın. Yeni bir tablo oluşturun ve şu alanı boyut olarak ekleyin:
ExtractRegEx(), URL'nin tamamını döndürürken ExtractRegExGroup(), kullandığımız group değerine karşılık gelen URL'nin ayrı bölümlerini döndürür. ID değeri 2 olan kayıt yalnızca bir URL içerir, bu nedenle bu kayıt için hiçbir veri döndürülmez.
Aynı normal ifade, farklı bilgi parçalarını döndürmek için tüm grafik ifadelerinde kullanılır. Normal ifadede tanımlanan grupların dökümü aşağıdaki gibidir.