<?php
$re = <<<'EOF'
/(?J)
(?&R)\K\s*(?<sign>[=+*-])\s*(?=(?&R))
|
(?&R)\s*\K\s*(?<sign>=)\s*(?=-(?&R))
(?(DEFINE)
(?<R>(?<!\w) ( (?:f|r|s) (?:1[0-5]|[0-9]) | CI | 1)))/mix
EOF ;
$str = <<<'EOF'
s3=f2+f5*f8+f9 # Should match all the = + - and *
foo=f5+bar*f7+f8+f9 # Should only match the last two '+'
SUBSTITUTION
f5=f5 + f6
f5=f5-f6
f5=f5+f6+CI-1
f4=-r4
f8=(f3+f3)/2
456e-3+5
EOF ;
# echo $re."\n";
# echo $str."\n";
# echo "---"."\n";
function my_replace( $matches ) {
return ' ' . $matches [ 'sign' ] . ' ' ;
}
?>
PD9waHAKCiRyZSA9IDw8PCdFT0YnCi8oP0opCig/JlIpXEtccyooPzxzaWduPls9KyotXSlccyooPz0oPyZSKSkKfAooPyZSKVxzKlxLXHMqKD88c2lnbj49KVxzKig/PS0oPyZSKSkKCig/KERFRklORSkKKD88Uj4oPzwhXHcpICggKD86ZnxyfHMpICg/OjFbMC01XXxbMC05XSkgfCBDSSB8IDEpKSkvbWl4CkVPRjsKCiRzdHIgPSA8PDwnRU9GJwpzMz1mMitmNSpmOCtmOSAgICAgICMgU2hvdWxkIG1hdGNoIGFsbCB0aGUgPSArIC0gYW5kICoKZm9vPWY1K2JhcipmNytmOCtmOSAjIFNob3VsZCBvbmx5IG1hdGNoIHRoZSBsYXN0IHR3byAnKycKClNVQlNUSVRVVElPTgoKZjU9ZjUgKyBmNgpmNT1mNS1mNgpmNT1mNStmNitDSS0xCmY0PS1yNApmOD0oZjMrZjMpLzIKNDU2ZS0zKzUKRU9GOwoKIyBlY2hvICRyZS4iXG4iOwoKIyBlY2hvICRzdHIuIlxuIjsKCiMgZWNobyAiLS0tIi4iXG4iOwoKCmZ1bmN0aW9uIG15X3JlcGxhY2UoJG1hdGNoZXMpIHsKICAgIHJldHVybiAnICcgLiAkbWF0Y2hlc1snc2lnbiddLiAnICc7Cn0KZWNobyAkb3V0cHV0ID0gcHJlZ19yZXBsYWNlX2NhbGxiYWNrKCRyZSwgJ215X3JlcGxhY2UnLCAkc3RyKTsKCj8+Cgo=