Waar kunnen wij je bij helpen?
Afdrukken

Dynamisch Tarief – Reguliere expressies

Met een Premium- of Premium Plus pakket zijn dynamische tarieven onderdeel van het Transport Management Systeem EasyTrans. Hiermee kun je tarieven instellen die pas geactiveerd worden als er bepaalde gegevens aanwezig zijn binnen een order. Denk bijvoorbeeld aan een bepaalde postcode, leverdag of land binnen afleverbestemmingen. Voor het vastleggen van de zoekwaardes (de gegevens die aanwezig moeten zijn voor activatie van het tarief) kun je daarom reguliere expressies gebruiken.

Reguliere expressies

Bij een dynamisch tarief leg je vast binnen welke invoervakken van de order-entry er gecontroleerd moet worden op bepaalde gegevens, zodat de juiste tarieven eruit komen. Daarnaast leg je vast op welke gegevens er gezocht moet worden (de zoekwaarde), dit doe je met een reguliere expressie. Binnen EasyTrans kun je reguliere expressies gebruiken, zodat je voorwaarden aan dynamische tarieven kunt koppelen.

Wat is een reguliere expressie?

Een reguliere expressie is een manier om patronen te beschrijven waardoor een computer softwarematig tekst/inhoud kan herkennen. Binnen de syntax (de grammatica van een programmeertaal) van reguliere expressies staan bepaalde tekens voor een patroon. Daardoor kun je bij dynamische tarieven exact vastleggen bij welke gegevens het tarief geactiveerd moet worden.

Hoe het werkt

Bij een dynamisch tarief leg je vast binnen welke invoervakken van de order-entry er gecontroleerd moet worden op bepaalde gegevens. Daarnaast leg je vast op welke gegevens er gezocht moet worden (de zoekwaarde), dit doe je met een reguliere expressie.

Bij het ingeven van ordergegevens controleert EasyTrans eerst je ingave op eventuele gekoppelde tarieven. Op deze manier kun je dus geautomatiseerd een tarief pas activeren als er bepaalde gegevens zijn vastgelegd in orders. Geef je bijvoorbeeld een levering in voor een zaterdag, met daarop een dynamisch zaterdag-tarief vanwege een weekendtoeslag? Dan wordt de toeslag automatisch geactiveerd o.b.v. van je orderingave!

Veelgebruikte expressies

Reguliere expressies zijn heel flexibel! In onderstaand overzicht vind je daarom enkele veelgebruikte expressies binnen EasyTrans:

^
Dakje
Geeft het begin van een tekenreeks aan ^10 geeft een zoekhit bij bijvoorbeeld: 10, 100, 1000
NIET bij 110 of 1100
|
Pipe
Staat vrij vertaald voor ‘of’. Zoek naar … of naar…. Oranje | Blauw geeft bijvoorbeeld een zoekhit bij Oranje maar ook bij Blauw
\s
Backslash + s
‘\s’ staat voor een spatie (whitespace)
Let op: Reguliere expressies zijn ook hooflettergevoelig, \S (hoofdletter S) betekent geen whitespace of spatie
^7418\sPE geeft een zoekhit op de postcode 7418 ET maar niet op de aan elkaar geschreven variant 7418ET
*
Sterretje
Een sterretje achter een teken geeft aan dat een teken nul keer of vaker mag voorkomen. ^7943\s*PE geeft een zoekhit op de postcode 7943 PE én op 7943PE
+
Plus
Een plusteken achter een teken geeft aan dat het vorige teken ten minste één keer moet voorkomen, maar dit mag ook oneindig vaak. 211+ geeft een zoekhit bij bijv. 211 of 2111 of 21111
NIET BIJ 21
?
Vraagteken
Een vraagteken geeft aan dat het voorgaande teken nul of één keer mag voorkomen. 211? geeft een zoekhit op 211 en 21
NIET OP 2111
.
Punt
Staat voor elk willekeurig teken
(Behalve \n (Starten op een nieuwe regel / lijn))
. geeft een zoekhit op ieder karakter, echter niet op regeleindes.
()
Haakjes
T.b.v. het zoeken van de tekens binnen de haakjes (patroongroep), in de exacte volgorde, op een willekeurige plaats in een tekenreeks.
Kan daarnaast ook gebruikt worden om andere expressies te groeperen.
(10) geeft een zoekhit bij 10101, 1011
(?!)
Vraagteken + Uitroepteken + tussen haakjes
Hiermee kun je tekens uitsluiten. ^7418(?!\s*ET) geeft een zoekhit bij alle postcodes binnen de 7418-reeks, behalve bij 7418ET
[]
Brackets/Vierkante haken
Tussen de brackets kun je bijvoorbeeld een lijst met mogelijke/toegestane tekens plaatsen. De tekens tussen de haakjes mogen daarom in elke volgorde, op een willekeurige plaats in een tekenreeks voorkomen. [10] geeft een zoekhit bij 012, 120, 210
[-]
Minteken tussen brackets
T.b.v. het zoeken binnen een reeks, bijvoorbeeld 0-5 is zoeken naar 0 t/m 5. Een vereenvoudigde manier van de eerdergenoemde OF-overeenkomst (|).  [1|2|3|4|5] is hetzelfde als [0-5]. [0-9] geeft een zoekhit bij elk cijfer van 0 tot en met 9
[^]
Dakje binnen brackets
Een dakje als eerste teken binnen vierkante haken verandert de tekenverzameling in het omgekeerde. [^0-9] herkent alles wat geen cijfer is.

Met bovenstaande reguliere expressies kun je dus de gegevens vastleggen waarop je een tarief wilt activeren, een voorbeeld:
Situatie: Ik wil een een toeslag berekenen bij een levering op bijvoorbeeld Texel. Texel heeft als postcodegebied: 1791 t/m 1797
Binnen mijn dynamische tarief geef ik in dat er gecontroleerd moet worden op de postcodes van de afleverbestemming en geef daarom de volgende zoekwaarde in: Zoekwaarde: ^179[0-7]

Uitleg zoekwaarde

  • ^: Start de zoekopdracht hier, zonder het dakje is bijvoorbeeld 91790 ook een zoekresultaat.
  • 179: Deze tekens moeten exact overeenkomen, ook in deze volgorde, om een resultaat te geven.
  • [0-7]: Binnen deze reeks moet gezocht worden (179 gevolgd door 1t/m7)

Expressie testen

Reguliere expressies zijn daarom een krachtige manier om te zoeken op diverse combinaties van letters en cijfers. Een instelling kan daardoor soms complex worden. Ga je bezig met de reguliere expressies en wil je je invoer eerst eens testen? Ga dan eens naar: regexr.com! Geef bij ‘Expression’ allereerst je expressie in en bij ‘Text’ de zoekwaarde die je hoopt te vinden!

Support

Reguliere expressies zijn dus heel flexibel maar ook heel uitgebreid. Het instellen van dynamische tarieven kan daardoor wellicht vrij complex zijn. Van veel dynamische tarieven is er ook een kennisbankartikel aanwezig. Hierin staan daarom diverse voorbeelden met zoekwaardes:

Kom je er desondanks niet uit? Medewerkers van EasyTrans Software helpen dan je graag bij het instellen van dynamische tarieven! Neem dan gerust contact met ons op.

INHOUD