So I decided I needed this, and wrote a nice workaround. Usage is simple: #include "StringRegExpReplaceCallback.au3" $sString = "%48%65%6C%6C%6F%2C%20%77%6F%72%6C%64%21" MsgBox(0, $sString, StringRegExpReplaceCallback($sString, "%([0-9A-f]{2})", "Callback")) Func Callback($asMatches) Return Chr(Dec($asMatches[1])) EndFunc ;==>Callback How it works It uses StringRegExp with the second option, and passes that array straight to the callback function. It then replaces the match with the re