ExtractRegExGroup() extraheert tekst uit een tekenreeksuitdrukking met behulp van het samengestelde reguliere expressiepatroon dat is opgegeven. Geef bij het gebruik van de functie de groep op die binnen de samengestelde regex moet worden gebruikt. De functie retourneert een nulwaarde als er geen overeenkomsten worden gevonden.
Als u de functie ExtractRegExGroup() in een LOAD-instructie gebruikt en field_no is weggelaten, dan zal de functie meerdere records retourneren. Als meerdere velden worden geladen met ExtractRegExGroup(), worden de cartesische producten van alle combinaties gemaakt.
Deze functie voert regexbewerkingen uit die hoofdlettergevoelig zijn. U kunt eventueel ook de variant ExtractRegExGroupI() gebruiken om hoofdletteronafhankelijke regexbewerkingen uit te voeren.
Syntaxis:
ExtractRegExGroup
(text, regex, group [, field_no])
Retourgegevenstypen: tekenreeks
Argumenten
Argument
Beschrijving
text
Tekenreeksuitdrukking die de tekst bevat die in de retourwaarde moet worden geëxtraheerd.
regex
De reguliere expressie om te gebruiken voor het extraheren van tekst.
group
Het nummer van de groep, in het geval van een samengestelde reguliere expressie.
Als de reguliere expressie slechts één groep bevat, gebruik dan in plaats daarvan de functie ExtractRegEx(). Als alternatief kunt u ExtractRegExGroup() gebruiken met een group waarde van 0.
U kunt een negatieve group waarde opgeven om van rechts naar links naar overeenkomsten te zoeken.
field_no
Het nummer van de overeenkomst die moet worden uitgepakt. Dit is handig als er meerdere overeenkomsten voor de reguliere expressie in de tekst kunnen worden gevonden. Geef bijvoorbeeld de waarde 4 op om de vierde overeenkomst te extraheren.
Dit is een optioneel argument. De standaardinstelling is 1 als deze niet is opgegeven.
Retourneert 456 (tweede groep van tweede overeenkomst).
Wanneer gebruiken
U kunt Extract RegEx() gebruiken om informatie te extraheren die u wilt isoleren uit gegevens die mogelijk ook andere informatie bevatten (bijvoorbeeld vrije tekst of JSON-tekenreeksen). Bijvoorbeeld:
Extraheer e-mailadressen, telefoonnummers, rekeningnummers en andere informatie uit tekst.
Extraheer numerieke waarden uit tekst (bijvoorbeeld valuta).
Standaardiseer de opmaak van tekst of numerieke gegevens.
Voorbeeld 1 - load-script om transactiecodes te parseren
Overzicht
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat:
Een tabel met de naam Transactions, die informatie over transacties bevat. Bepaalde details worden vastgelegd met transactiecodes met behulp van de volgende syntaxis:
Transactiejaar-Transactiebron (d.w.z. online aankoop of aankoop in de winkel)-Gekoppeld distributiecentrum
Het aanmaken van verschillende nieuwe velden om elk detail te extraheren, waarbij telkens dezelfde samengestelde reguliere expressie wordt hergebruikt.
Onze vereisten:
Het jaar kan een willekeurige combinatie van vier cijfers zijn.
De waarden ONLINE en INSTORE zijn de enige aanvaardbare waarden voor transactiebron.
Het distributiecentrum moet precies vijf nummers hebben.
Load-script
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
`;
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
RecordID
TransactionCode
TransactionCode_Unparsed
TransactionYear
TransactionSource
TransactionDC
Resultatentabel
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
Deze resultaten laten zien hoe u met het argument group een enkele regex kunt hergebruiken voor meerdere bewerkingen. Het veld TransactionCode_Unparsed, dat een group waarde van 0 gebruikt, biedt in dit geval geen extra waarde, maar wordt hier weergegeven om de functie te demonstreren.
Voorbeeld 2 - load-script om zakelijke contactgegevens te extraheren
Overzicht
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat:
Een tabel met de naam BusinessContactInfo, die informatie over bedrijven bevat die gevonden werd op de website van elk bedrijf.
ContactInfo is een veld dat vrije tekst bevat, inclusief e-mailadressen en telefoonnummers van bedrijven.
Het aanmaken van verschillende nieuwe velden om elk detail te extraheren, waarbij telkens dezelfde samengestelde reguliere expressie wordt hergebruikt.
Onze vereisten:
E-mailadressen moeten voldoen aan een specifieke reeks vereisten en syntaxis.
Telefoonnummers moeten NANP-telefoonnummers met 10 cijfers zijn. We willen toestaan dat het netnummer tussen haakjes komt te staan en op bepaalde punten spaties en koppeltekens toestaan.
Load-script
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');
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
CompanyName
CompanyEmail
CompanyPhoneNum
Resultatentabel
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
Dezelfde samengestelde reguliere expressie wordt hergebruikt om verschillende informatie op te halen. Het argument group specificeert welke van de twee groepen van de reguliere expressie gezocht moet worden, en het argument field_no specificeert welke algemene overeenkomst (over de hele zoekreeks) we willen vinden.
De ExtractRegEGroupxI() variant van de functie zorgt voor hoofdletterongevoelige zoekopdrachten.
Voorbeeld 3 - load-script om componenten uit ISBN-codes te extraheren
Overzicht
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat:
Het aanmaken van een variabele, ISBN_RegEx, om de reguliere expressie op te slaan die we voor alle extracties willen gebruiken.
Een set ISBN-codes voor boeken die een boekwinkel bij verschillende leveranciers wil bestellen.
We moeten het volgende uit elke ISBN-code extraheren:
EAN
Groep
Registrant
Publicatie
Controlesom
Load-script
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
];
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
Supplier
EAN
Group
Registrant
Publication
Checksum
Resultatentabel
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
Voorbeeld 4 - diagramuitdrukkingen om zakelijke contactgegevens te extraheren (met vergelijking ExtractRegEx() )
Overzicht
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat:
Een tabel met de naam BusinessContactInfo, die informatie over bedrijven bevat die gevonden werd op de website van elk bedrijf.
ContactInfo is een veld dat vrije tekst bevat, inclusief e-mailadressen en telefoonnummers van bedrijven. We willen elk e-mailadres en telefoonnummer extraheren met diagramuitdrukkingen.
Onze vereisten:
E-mailadressen moeten voldoen aan een specifieke reeks vereisten en syntaxis.
Telefoonnummers moeten NANP-telefoonnummers met 10 cijfers zijn. We willen toestaan dat het netnummer tussen haakjes komt te staan en op bepaalde punten spaties en koppeltekens toestaan.
Load-script
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');
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg dit veld toe als dimensie:
CompanyName
Voeg de volgende berekende dimensies toe aan de tabel:
Dezelfde samengestelde reguliere expressie wordt hergebruikt om verschillende informatie op te halen. Het argument group specificeert welke van de twee groepen van de reguliere expressie gezocht moet worden, en het argument field_no specificeert welke algemene overeenkomst (over de hele zoekreeks) we willen vinden.
De ExtractRegEGroupI() variant van de functie zorgt voor hoofdletterongevoelige zoekopdrachten.
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat:
Een tabel met de naam Correspondence, die tekst van een e-mailbericht bevat in een veld met de naam EmailBody.
Inhoud van e-mailberichten die web-URL's bevatten.
We willen de tweede URL, indien aanwezig, uitpakken in de volgende componenten:
Volledige URL
Protocol
Domein
Pad
We willen één reguliere expressie gebruiken om alle extracties te regelen.
Load-script
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');
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg dit veld toe als dimensie:
ExtractRegEx() retourneert de hele URL, terwijl ExtractRegExGroup() individuele delen van de URL retourneert, die overeenkomen met de group waarde die we hebben gebruikt. De record met een ID waarde van 2 bevat slechts één URL, dus hiervoor worden geen gegevens geretourneerd.
Dezelfde reguliere expressie wordt in alle diagramuitdrukkingen gebruikt om verschillende stukjes informatie te retourneren. Een uitsplitsing van de groepen die in de reguliere expressie zijn gedefinieerd, is als volgt.
Als u problemen ervaart op deze pagina of de inhoud onjuist is – een typfout, een ontbrekende stap of een technische fout – laat het ons weten zodat we dit kunnen verbeteren!