for i=0, 6, 1 do x = string.gsub("%1$x","(%d)", function (d) return d + i end, 1) io.write(x) end print() --8<-- outputs: %1$x%2$x%3$x %4$x%5$x%6$x %7$x%8$x%9$x %10$x%11$x%12$x %13$x%14$x%15$x %16$x%17$x%18$x %19$x%20$x%21$x %1$x%2$x%3$x%4$x%5$x%6$x%7$x