IndexRegEx() söker igenom indatasträngen och returnerar startpositionen för den n:te förekomsten av det angivna reguljära uttrycksmönstret. Ett valbart tredje argument count ger värdet för n, vilket annars är 1. Strängens positioner är numrerade vänster till höger från 1 och uppåt. Om ingen matchning hittas returnerar funktionen 0.
Den här funktionen utför regexoperationer som är skiftlägeskänsliga. Alternativt kan du använda varianten IndexRegExI() för att utföra skiftlägesokänsliga regexoperationer.
Syntax:
IndexRegEx
(text, regex [, count])
Returnerad datatyp: heltal
Argument
Argument
Beskrivning
text
Indatasträngens text inom vilken du vill söka efter ett reguljärt uttryck.
regex
Det reguljära uttryck som ska användas för att söka i indatasträngen.
count
Numret på matchningen. 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 positionen för den fjärde matchningen.
Det här är ett valfritt argument. Standard är 1 om det inte anges. Du kan ange ett negativt värde för att söka efter matchningar från höger till vänster.
Exempel på funktioner
Exempel
Resultat
IndexRegEx('abc123','[a-z][0-9]+')
Returnerar 3 (startpositionen för den första matchningen).
IndexRegEx('abc123','[a-z][0-9]+',2)
Returnerar 0 (regex har inte några andra matchning).
IndexRegEx('ABC123','[a-z][0-9]+')
Returnerar 0, eftersom IndexRegEx() är skiftlägeskänsligt.
IndexRegExI('ABC123','[a-z][0-9]+')
Returnerar 3. Den skiftlägesokänsliga varianten av funktionen, IndexRegExI(), används.
Användning
Användningsfall för denna funktion inkluderar:
Identifiera var specifika textmönster förekommer inom större textmassor. Du kanske till exempel vill veta var ett mönster för e-postadresser används i en serie långa e-postmeddelanden.
IndexRegEx() är särskilt användbart för avancerad databehandling och används ofta i det första steget i en längre och mer komplex datatransformering. Det är vanligtvis lättare att lösa problem med andra regexfunktioner som ExtractRegEx(), MatchRegEx() och CountRegEx(), men det kan finnas tillfällen då IndexRegEx() erbjuder lösningar som dessa funktioner inte kan tillhandahålla.
Exempel 1 – laddningsskript för att identifiera böcker med ISBN
Översikt
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
Tabellen ISBN innehåller e-postmeddelandeinnehåll i ett fält med namnet EmailBody.
Vi vill hitta positionerna för alla 13-siffriga ISBN-koder från det naturliga språket i e-postmeddelandet.
Laddningsskript
SET ISBN_RegEx = 'ISBN[ ]*([0-9]{3})-([0-9]{1})-([0-9]{4})-([0-9]{4})-([0-9]{1})';
ISBN:
LOAD IndexRegEx(EmailText,'$(ISBN_RegEx)',1) AS ISBNCode1,
IndexRegEx(EmailText,'$(ISBN_RegEx)',2) AS ISBNCode2,
IndexRegEx(EmailText,'$(ISBN_RegEx)',3) AS ISBNCode3,
* INLINE `
EmailText
Hi there! I have some books that I'm interested in ordering from your distribution center. Just wanted to make sure they were in stock before I put the order in on the system - do you think you could tell me whether you have these in stock, and how many you might be able to ship us? Thanks! Item 1: ISBN 123-3-1234-1234-0. This is one I've had a really hard time getting a hold of lately. Do you think you would have 5 in stock? If not, can I put a hold on the next 5 you get? Item 2: ISBN 012-2-0123-0123-4 ... This one is not high-priority, but if you have one, I'll take it! Item 3: ISBN 000-1-0123-0123-2. Customers have been requesting this one for a long time, and we haven't had it in stock for years due to it being out of print. Any chance you might have 7 of them? Thanks!
` (delimiter is '/t/';
Resultat
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
ISBNCode1
ISBNCode2
ISBNCode3
Resultattabell
ISBNCode1
ISBNCode2
ISBNCode3
301
487
588
Exempel 2 – diagramuttryck för att identifiera kontakter med sekundära telefonnummer
Ö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 företagets telefonnummer. Vi vill ta reda på vilka företag som har flera telefonnummer tillgängliga.
Våra krav:
Telefonnumret måste vara ett NANP-nummer med 10 siffror.
Vi vill att riktnumret ska kunna anges inom parentes.
Vi vill tillåta ett enskilt blanksteg eller bindestreck mellan varje segment av ett telefonnummer.
Laddningsskript
BusinessContactInfo:
Load * Inline `
ID CompanyName ContactInfo
1 Company A (123) 456-7890 (023) 123-4567
2 Company B 0123456790 1357913579 0246802468
3 Company C 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:
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!