29 augustus 2012

GREP duizendtallen scheiden met dunne spatie

.
Dit was een vraag uit de praktijk:

"Ik heb getallen in mijn document als 1200, 12000 en 120000 (of welk willekeurig getal dan ook zoals 22678) en ik wil graag een dunne spatie voor de laatste drie getallen van het duizendtal. Is dit met GREP te doen?"

Dat kan met een GREP zoek/vervang actie inderdaad.

Zoek naar

(?<=\<)(\d+)(\d{3})
Vervang door
$1~<$2

Je zoekt naar de laatste drie getallen vooraf gegaan door 1 of meerdere getallen die wel moeten worden gekenmerkt als 'los' getal, vandaar het voorwaardelijk zoeken op (?=\<) wat een woordbegin aangeeft.
Dan vervangen we het geheel met een dunne spatie ~< tussen de gevonden cijfers en zetten de getallen weer terug $1 en $2.

(Deze GREP kan nog wat worden uitgebreid – en daardoor ingewikkelder gemaakt worden – om grotere getallen in duizendtallen te onderscheiden maar dat gaat hier nu even te ver, wellicht een volgende keer!)

Geen opmerkingen: