Hash keys may only be strings while I wanted my keys to be compiled regex objects and code references. You've just coerced every rule into being strings even where it doesn't make sense.
I guess you're right; I guess I didn't read carefully enough, and then only saw strings being used in your code. On the other hand, it really doesn't make sense to me to allow any replacements besides strings.