I belive Temporary strings would be created anyway, just unnamed.
If you want to avoid that I guess you can list all characters
in the pattern and provide a function that does a lookup to determine
the replacement. This should be done _after_ the first pass escaping
the ampersend itself.