Matchning, jokertegn og intervaller
I et listeopslag tester vi, om der eksisterer nogen poster på listen, hvor den indkommende nøgle (f.eks. henvenderens telefonnummer, indtastet DTMF eller emnet i en e-mail) matcher nøglen i en række på listen. Hvis der findes et match, returneres den (første) matchende posts værdi.
Den indkommende nøgle kan kun være et enkelt (konstant) element. Jokertegn eller intervaller er ikke tilladt her.
Feltet Nøgle (Key) for en post på en liste kan være et enkelt element (konstant), et interval eller et enkelt element indeholdende et eller flere jokertegn. Kombinationen af interval og et eller flere jokertegn i en listerækkes nøgle er ikke tilladt.
Intervaller i feltet Nøgle (Key) på listen
- Fra-værdien og til-værdien er adskilt af : (kolon)
- Til-værdien er inkluderet i intervallet. Eksempel på område for Nøgle (Key): 21000000 : 21999999
Jokertegn i feltet Nøgle (Key)
Matching af jokertegn samt substitution (næste kapitel) er baseret på syntaks kendt fra almindelige Perl-baserede udtryk. Der er dog nogle begrænsninger sammenlignet med den fuldstændige Perl-syntaks. Følgende ting understøttes som del af en nøgle:
- Angiver et hvilket som helst antal tegn: .* (dvs. enkelt punktum efterfulgt af en stjerne)
- Angiver et hvilket som helst enkelt tegn: . (dvs. et enkelt punktum)
Eksempler:
Beskrivelse | Nøgle |
---|---|
Et match for et hvilket som helst tal, der begynder med 47 | 47. * |
Match for tal, som begynder med 47, og som består af i alt 10 cifre (dvs. otte cifre efter 47) | 47 ........ |
Match et hvilket som helst tal, der begynder med 47 og slutter på 99. Mellem begyndertallet 47 og sluttallet 99 skal der være mindst to tegn. | 47 ... * 99 |
Match for tekst, der slutter med abc | . * abc |
Match for tekst, der begynder med abc | abc. * |
Match for tekst, der indeholder abc | . * abc. * |
Avanceret:
Angivelse kræves til jokertegnene
Hvis et enkelt punktum skal være en del af nøglen og ikke skal behandles som et jokertegn, skal du sætte en omvendt skråstreg som præfiks for punktummet (escape punktummet). Det samme gælder for en stjerne, hvis stjernen efterfølger et enkelt punktum. Dog forstås en stjerne alene (dvs. ikke lige efter et punktum) som værende en del af nøglen uden omvendt skråstreg. Eksempler, angivelse:
Beskrivelse | Nøgle |
---|---|
Lav en nøgle, der matcher en indkommende nøgle med den faste værdi 47*1 | 47 * 1 |
Lav en nøgle, der matcher en indkommende nøgle, som begynder med 47 og derefter har ét tegn – af en hvilken som helst type – umiddelbart efterfulgt af *9 (et eksempel på en sådan indkommende nøgle er 473*9) | 47. \ * 9 |
Lav en nøgle, der matcher en indkommende nøgle med den faste værdi 47.1 | 47 \ .1 |
Substitution:
En returværdi (fra match ved opslag) kan manipuleres, så den indeholder en del af (eller hele) den indkommende nøgle. Sådan gøres det:
- Et jokertegn-udtryk kan være omgivet af parenteser, således at det bliver til en jokertegn-gruppe.
- Der kan være mere end én jokertegn-gruppe i den samme nøgle. Tegnene i en indkommende nøgle, der matcher en bestemt jokertegn-gruppe, kan være en del af den returnerede værdi.
- Pladsholdere (i den angivne returværdi) for disse jokertegn-grupper er $1 for den første gruppe, $2 for den anden, $3 for den tredje osv.
Eksempler:
Beskrivelse | Indstil nøgle til | Indstil værdi til |
---|---|---|
Enhver indkommende nøgle, som begynder med 22, og som består af nøjagtig 8 cifre, skal have et præfiks med værdien 0047 | 22 (......) | 004722 $ 1 |
Indkommende nøgle, der begynder med 0047 og indeholder et ukendt antal tegn derefter, skal have 0047 fjernet. | 0047 (. *) | $ 1 |