ExtractRegExGroup — funkcja skryptu i funkcja wykresu
ExtractRegEx() wyodrębnia tekst z wejściowego wyrażenia ciągu przy użyciu określonego złożonego wzorca wyrażenia regularnego. Podczas korzystania z tej funkcji należy określić grupę do użycia w złożonym wyrażeniu regularnym. Funkcja zwraca wartość null, jeśli nie znaleziono żadnych dopasowań.
W przypadku użycia funkcji ExtractRegExGroup() w instrukcji LOAD i pominięcia field_no funkcja zwróci wiele rekordów. Jeśli przy użyciu funkcji ExtractRegExGroup() załadowano kilka pól, wówczas zostanie wygenerowany iloczyn kartezjański wszystkich kombinacji.
Funkcja ta wykonuje operacje z wyrażeniami regularnymi, w których rozróżniana jest wielkość liter. Zamiast tego można użyć wariantu ExtractRegExGroupI(), aby wykonywać operacje z wyrażeniami regularnymi bez rozróżniania wielkości liter.
Składnia:
ExtractRegExGroup
(text, regex, group [, field_no])
Typ zwracanych danych: ciąg znaków
Argumenty
Argument
Opis
text
Wyrażenie ciągu zawierające tekst, który ma zostać wyodrębniony w wartości zwracanej.
regex
Wyrażenie regularne używane do wyodrębniania tekstu.
group
Numer grupy w przypadku złożonego wyrażenia regularnego.
Jeśli wyrażenie regularne zawiera tylko jedną grupę, użyj zamiast tego funkcji ExtractRegEx(). Zamiast tego można użyć ExtractRegExGroup() z wartością group równą 0.
Można określić ujemną wartość group, aby wyszukiwać dopasowania od prawej do lewej.
field_no
Numer dopasowania do wyodrębnienia. Jest to przydatne, gdy w tekście można znaleźć wiele dopasowań do wyrażenia regularnego. Na przykład określ wartość 4, aby wyodrębnić czwarte dopasowanie.
Ten argument jest opcjonalny. Domyślnie 1, jeśli nie określono.
Możesz użyć Extract RegEx(), aby wyodrębnić informacje do wyodrębnienia z danych, które mogą również zawierać inne informacje (na przykład dowolny tekst lub ciągi JSON). Na przykład:
Wyodrębnij adresy e-mail, numery telefonów, numery kont i inne informacje z tekstu.
Wyodrębnij wartości liczbowe z tekstu (na przykład waluty).
Ustandaryzuj formatowanie danych tekstowych lub liczbowych.
Przykład 1 — skrypt ładowania do analizowania kodów transakcji
Przegląd
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
Skrypt ładowania zawiera:
Tabela o nazwie Transactions, która zawiera informacje o transakcjach. Niektóre szczegóły są przechwytywane za pomocą kodów transakcji przy użyciu następującej składni:
Rok transakcji-Źródło transakcji (tj. zakup online lub w sklepie)-Powiązane centrum dystrybucji
Utworzenie kilku nowych pól w celu wyodrębnienia każdego szczegółu, z których każde wykorzystuje to samo złożone wyrażenie regularne.
Nasze wymagania:
Rok może być dowolną kombinacją czterech cyfr.
Wartości ONLINE i INSTORE są jedynymi dopuszczalnymi wartościami dla źródła transakcji.
Centrum dystrybucji musi mieć dokładnie pięć cyfr.
Skrypt ładowania
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
`;
Wyniki
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:
RecordID
TransactionCode
TransactionCode_Unparsed
TransactionYear
TransactionSource
TransactionDC
Tabela wynikowa
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
Wyniki te podkreślają, jak argument group umożliwia ponowne użycie pojedynczego wyrażenia regularnego do wielu operacji. Pole TransactionCode_Unparsed, które wykorzystuje wartość group równą 0, nie zapewnia żadnej dodatkowej wartości w tym przypadku, ale jest tutaj pokazane w celu zademonstrowania funkcji.
Przykład 2 — skrypt ładowania w celu wyodrębnienia biznesowych informacji kontaktowych
Przegląd
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
Skrypt ładowania zawiera:
Tabela o nazwie BusinessContactInfo, zawierająca informacje o firmach znalezione w witrynie internetowej każdej z nich.
ContactInfo to pole zawierające dowolny tekst, w tym firmowe adresy e-mail i numery telefonów.
Utworzenie kilku nowych pól w celu wyodrębnienia każdego szczegółu, z których każde wykorzystuje to samo złożone wyrażenie regularne.
Nasze wymagania:
Adresy e-mail muszą spełniać określony zestaw wymagań i mieć określoną składnię.
Numery telefonów muszą być numerami NANP składającymi się z 10 cyfr. Chcemy zezwolić na ujęcie numeru kierunkowego w nawiasy, a także na spacje i myślniki w niektórych miejscach.
Skrypt ładowania
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');
Wyniki
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:
CompanyName
CompanyEmail
CompanyPhoneNum
Tabela wynikowa
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
To samo złożone wyrażenie regularne jest ponownie wykorzystywane do pobierania różnych informacji. Argument group określa, która z dwóch grup wyrażenia regularnego ma być przeszukiwana, a argument field_no określa ogólne dopasowanie (w całym ciągu), które chcemy znaleźć.
Wariant funkcji ExtractRegEGroupxI() zapewnia wyszukiwanie bez uwzględniania wielkości liter.
Przykład 3 — skrypt ładowania do wyodrębniania składników z kodów ISBN
Przegląd
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
Skrypt ładowania zawiera:
Utworzenie zmiennej, ISBN_RegEx, do przechowywania wyrażenia regularnego, którego chcemy użyć do wszystkich wyodrębnień.
Zestaw kodów ISBN książek, które księgarnia chce zamówić od kilku dostawców.
Musimy wyodrębnić następujące elementy z każdego kodu ISBN:
EAN
Grupa
Rejestrujący
Publikacja
Suma kontrolna
Skrypt ładowania
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
];
Wyniki
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:
Supplier
EAN
Group
Registrant
Publication
Checksum
Tabela wynikowa
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
Przykład 4 — wyrażenia wykresu do wyodrębniania informacji o kontaktach biznesowych (z porównaniem ExtractRegEx())
Przegląd
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
Skrypt ładowania zawiera:
Tabela o nazwie BusinessContactInfo, zawierająca informacje o firmach znalezione w witrynie internetowej każdej z nich.
ContactInfo to pole zawierające dowolny tekst, w tym firmowe adresy e-mail i numery telefonów. Chcemy wyodrębnić każdy adres e-mail i numer telefonu za pomocą wyrażeń wykresu.
Nasze wymagania:
Adresy e-mail muszą spełniać określony zestaw wymagań i mieć określoną składnię.
Numery telefonów muszą być numerami NANP składającymi się z 10 cyfr. Chcemy zezwolić na ujęcie numeru kierunkowego w nawiasy, a także na spacje i myślniki w niektórych miejscach.
Skrypt ładowania
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');
Wyniki
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj to pole jako wymiar:
To samo złożone wyrażenie regularne jest ponownie wykorzystywane do pobierania różnych informacji. Argument group określa, która z dwóch grup wyrażenia regularnego ma być przeszukiwana, a argument field_no określa ogólne dopasowanie (w całym ciągu), które chcemy znaleźć.
Wariant funkcji ExtractRegEGroupI() zapewnia wyszukiwanie bez uwzględniania wielkości liter.
Przykład 5 — analizowanie adresów URL (z porównaniem ExtractRegEx())
Przegląd
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
Skrypt ładowania zawiera:
Tabela o nazwie Correspondence, która zawiera tekst wiadomości e-mail w polu o nazwie EmailBody.
Treść wiadomości e-mail zawierająca adresy URL stron internetowych.
Chcemy wyodrębnić drugi adres URL, jeśli jest obecny, z podziałem na następujące składniki:
Pełny adres URL
Protokół
Domena
Ścieżka
Chcemy użyć pojedynczego wyrażenia regularnego do kontrolowania wszystkich wyodrębnień.
Skrypt ładowania
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');
Wyniki
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj to pole jako wymiar:
ExtractRegEx() zwraca cały adres URL, podczas gdy ExtractRegExGroup() zwraca poszczególne części adresu URL, odpowiadające użytej wartości group. Rekord o wartości ID równej 2 zawiera tylko jeden adres URL, więc nie są dla niego zwracane żadne dane.
To samo wyrażenie regularne jest używane we wszystkich wyrażeniach wykresu do zwracania różnych informacji. Rozbicie grup zdefiniowanych w wyrażeniu regularnym wygląda następująco.