3 maart 2014

Postcode GREP

.
In een aangeleverde tekst met veel adressen en postcodes was met name het vormgeven van postcodes een rommeltje: soms stond er een spatie tussen de vier cijfers en de twee letters, soms twee spaties. Idem tussen de twee letters en de naamplaats. En soms een twee en-spaties enzovoort enzovoort.
En soms stonden de twee letters ingetypt als kapitaal, soms als kleinkapitaal (afhankelijk van de voorkeur van de klant laten we dat zo).

Volgens de regels hoort er een en-spatie te staan tussen de vier cijfers en de twee letters en en em-spatie tussen de twee letters en de plaatsnaam.
Als alternatief mag je van PostNL ook één en respectievelijk twee spaties gebruiken in plaats van de en- en em-spatie.

Een mooi project voor GREP:
we zoeken altijd
'1234 AB WOONPLAATS'
Vier cijfers:  \d\d\d\d  of, korter: \d{4}
Een of meerdere spaties van elk soort: \s+
Twee letters (ongeacht Kapitaal, kleinkapitaal enz):[\l\u]{2}
Een of meerdere spaties van elk soort: \s+
Een kapitaal waarmee de woonplaats begint: \u

Samen:
\d{4}\s+[\l\u]{2}\s+\u

Maar we willen de gevonden spaties verwijderen en vervangen door respectievelijk een en-spatie en een em-spatie. Dat betekent dat we de gevonden vier cijfers, de gevonden twee letters en de beginkapitaal van de woonplaats weer terug willen zetten met de juiste spaties daartussen. Daarom zetten we haakjes om de gedeelten die we straks terug willen zetten

Het zoekgedeelte wordt dan dus: 

(\d{4})\s+([\l\u]{2})\s+(\u)

Deze gevonden delen moeten teruggezet worden met de juiste spaties ertussen en-spatie:   ~>
em-spatie: ~m

Het vervanggedeelte wordt dan dus:

$1~>$2~m$3


Wil je 'gewone' spaties (enkele en dubbele respectievelijk) dan typ je die simpelweg tussen de $-codes in plaats van de code voor en- en em-spatie.

*Volgens de Belgische norm NBN Z 01-002 komt er tussen postcode en plaatsnaam één spatie, de plaatsnaam wordt in hoofdletters geschreven.






Geen opmerkingen: