Dit hangt sterk af van hoe uw gegevens zijn opgemaakt binnen $r_val , maar een goed begin zou zijn om te proberen:
$r_val = preg_replace('/(?<!\.)\b0\b(?!\.)/', '-', $r_val);
Waar \b is een teken van 0 lengte dat het begin of einde van een 'woord' vertegenwoordigt.
Hoe vreemd het ook mag klinken, maar de Perl regex-documentatie
is eigenlijk heel goed voor het uitleggen van het regex-gedeelte van de preg_* functies, aangezien Perl de functionaliteit is waar de functionaliteit daadwerkelijk wordt geïmplementeerd.