allows nested replacement patterns in string/interpolate