ExtractRegExGroup() extraherar text från ett indatastränguttryck med hjälp av det sammansatta reguljära uttrycksmönster som anges. När du använder funktionen anger du den grupp som ska användas i den sammansatta regexen. Funktionen returnerar ett nullvärde om inga matchningar hittas.
Om du använder funktionen ExtractRegExGroup() i en LOAD-sats och field_no utelämnas, kommer funktionen att returnera flera poster. Om flera fält läses in med hjälp av ExtractRegExGroup() skapas de kartesiska produkterna för alla kombinationer.
Den här funktionen utför regexoperationer som är skiftlägeskänsliga. Alternativt kan du använda varianten ExtractRegExGroupI() för att utföra skiftlägesokänsliga regexoperationer.
Syntax:
ExtractRegExGroup
(text, regex, group [, field_no])
Returnerad datatyp: sträng
Argument
Argument
Beskrivning
text
Stränguttryck som innehåller den text som ska extraheras i returvärdet.
regex
Det reguljära uttryck som ska användas för att extrahera text.
group
Gruppens nummer, om det rör sig om ett sammansatt reguljärt uttryck.
Om det reguljära uttrycket bara innehåller en grupp använder du istället funktionen ExtractRegEx(). Alternativt kan du använda ExtractRegExGroup() med ett group-värde på 0.
Du kan ange ett negativt värde för group för att söka efter matchningar från höger till vänster.
field_no
Numret på den matchning som ska extraheras. Detta är användbart när flera träffar för det reguljära uttrycket kan finnas i texten. Ange t.ex. värdet 4 för att få fram den fjärde matchningen.
Det här är ett valfritt argument. Standard är 1 om det inte anges.
Returnerar 456 (andra gruppen i andra matchningen).
Användning
Du kan använda Extract RegEx() för att extrahera information som du vill isolera från data som också kan innehålla annan information (t.ex. fritext eller JSON-strängar). Exempel:
Extrahera e-postadresser, telefonnummer, kontonummer och annan information från text.
Extrahera numeriska värden från text (t.ex. valuta).
Standardisera formateringen av text eller numeriska data.
Exempel 1 – laddningsskript för att analysera transaktionskoder
Översikt
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
En tabell med namnet Transactions, som innehåller information om transaktioner. Vissa detaljer fångas upp med transaktionskoder som använder följande syntax:
Transaktionsår-Transaktionskälla (dvs. köp online eller i butik)-Associerad distributionscentral
Skapandet av flera nya fält för att extrahera varje detalj, var och en återanvänder samma sammansatta reguljära uttryck.
Våra krav:
Årtalet kan vara en valfri kombination av fyra siffror.
Värdena ONLINE och INSTORE är de enda godtagbara värdena för transaktionskällan.
Distributionscentralen måste ha exakt fem nummer.
Laddningsskript
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
`;
Resultat
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
RecordID
TransactionCode
TransactionCode_Unparsed
TransactionYear
TransactionSource
TransactionDC
Resultattabell
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
Dessa resultat visar hur argumentet group gör att du kan återanvända en enda regex för flera operationer. Fältet TransactionCode_Unparsed, som använder ett group-värde på 0, ger inget ytterligare värde i det här fallet, men visas här för att demonstrera funktionen.
Exempel 2 – laddningsskript för att extrahera kontaktinformation för företag
Översikt
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
En tabell som heter BusinessContactInfo, som innehåller information om företag som hittades på respektive företags webbplats.
ContactInfo är ett fält som innehåller fritext, inklusive företagets e-postadresser och telefonnummer.
Skapandet av flera nya fält för att extrahera varje detalj, var och en återanvänder samma sammansatta reguljära uttryck.
Våra krav:
E-postadresser måste uppfylla en specifik uppsättning krav och syntax.
Telefonnumret måste vara ett NANP-nummer med 10 siffror. Vi vill tillåta att riktnumret sätts inom parentes och tillåta blanksteg och bindestreck på vissa ställen.
Laddningsskript
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');
Resultat
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
CompanyName
CompanyEmail
CompanyPhoneNum
Resultattabell
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
Samma sammansatta reguljära uttryck återanvänds för att hämta olika information. Argumentet group anger vilken av de två grupperna i det reguljära uttrycket som ska sökas, och argumentet field_no anger vilken övergripande matchning (över hela strängen) som vi vill hitta.
ExtractRegEGroupxI()-varianten av funktionen säkerställer sökningar utan skiftlägeskänslighet.
Exempel 3 – laddningsskript för att extrahera komponenter från ISBN-koder
Översikt
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
Skapandet av en variabel, ISBN_RegEx, för att lagra det reguljära uttryck som vi vill använda för alla extraktioner.
En uppsättning ISBN-koder för böcker som en bokhandel vill beställa från flera leverantörer.
Vi måste extrahera följande från varje ISBN-kod:
EAN
Grupp
Registrant
Publication
Checksum
Laddningsskript
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
];
Resultat
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
Supplier
EAN
Group
Registrant
Publication
Checksum
Resultattabell
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
Exempel 4 – diagramuttryck för att extrahera kontaktinformation för företag (med jämförelse med ExtractRegEx() )
Översikt
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
En tabell som heter BusinessContactInfo, som innehåller information om företag som hittades på respektive företags webbplats.
ContactInfo är ett fält som innehåller fritext, inklusive företagets e-postadresser och telefonnummer. Vi vill extrahera varje e-postadress och telefonnummer med diagramuttryck.
Våra krav:
E-postadresser måste uppfylla en specifik uppsättning krav och syntax.
Telefonnumret måste vara ett NANP-nummer med 10 siffror. Vi vill tillåta att riktnumret sätts inom parentes och tillåta blanksteg och bindestreck på vissa ställen.
Laddningsskript
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');
Resultat
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till det här fältet som en dimension:
CompanyName
Lägg till följande beräknade dimensioner i tabellen:
Samma sammansatta reguljära uttryck återanvänds för att hämta olika information. Argumentet group anger vilken av de två grupperna i det reguljära uttrycket som ska sökas, och argumentet field_no anger vilken övergripande matchning (över hela strängen) som vi vill hitta.
ExtractRegEGroupI()-varianten av funktionen säkerställer sökningar utan skiftlägeskänslighet.
Exempel 5 – URL-parsning (med jämförelse på ExtractRegEx())
Översikt
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
En tabell med namnet Correspondence, som innehåller e-postmeddelandetexten i ett fält med namnet EmailBody.
Innehåll i e-postmeddelanden som innehåller URL:er.
Vi vill extrahera den andra URL:en, om den finns, i följande komponenter:
Full URL
Protocol
Domän
Sökväg
Vi vill använda ett enda reguljärt uttryck för att styra all extrahering.
Laddningsskript
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');
Resultat
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till det här fältet som en dimension:
ExtractRegEx() returnerar hela URL:en, medan ExtractRegExGroup() returnerar enskilda delar av URL:en, vilket motsvarar det group-värde vi använde. Posten med värdet 2 på ID innehåller bara en URL, så inga data returneras för den.
Samma reguljära uttryck används i alla diagramuttryck för att returnera olika typer av information. En uppdelning av de grupper som definieras i det reguljära uttrycket följer.
Om du hittar några fel på denna sida eller i innehållet – ett stavfel, ett steg som saknas eller ett tekniskt fel – berätta för oss så att vi kan blir bättre!