3v4l.org

run code in 300+ PHP versions simultaneously
<?php $string = '987ABC11-15; 77; 877; 66-68'; $pattern = '~(^\d+[A-Z]+)?\d+\D+\K~'; echo preg_replace_callback($pattern, function($m)use(&$prefix) { // var_export($m); // if you want to see if (isset($m[1])) $prefix = $m[1]; return $prefix; }, $string, -1, $count); echo "\nmickmackusa count = $count"; echo "\n---\n"; echo preg_replace_callback('/^(\d+[A-Z]+)|\d+/', function($m) use (&$pfx) { // more replacements, easier to comprehend if (!empty($m[1])) $pfx = $m[1]; else return $pfx . $m[0]; }, $string, -1, $count); echo "\nbobblebubble count = $count";

preferences:
23.79 ms | 404 KiB | 5 Q