string.gsub (s, patrón, repl [, n])
Devuelve una copia de s en la que todas (o las n primeras, si se dan) las apariciones del patrón se han sustituido por una cadena de sustitución especificada por repl, que puede ser una cadena, una tabla o una función.
gsub también devuelve, como segundo valor, el número total de coincidencias que se han producido.
Si ' repl ' es una cadena, se utiliza su valor para la sustitución. El carácter ' % ' funciona como carácter de escape: cualquier secuencia en ' repl de la forma ' %n, con n entre 1 y 9, representa el valor de la n-ésima subcadena capturada (véase más adelante). La secuencia%0" representa toda la coincidencia. La secuencia%%" corresponde a un único " %.
Si ' repl ' es una tabla, se consulta la tabla para cada coincidencia, utilizando la primera captura como clave; si el patrón no especifica ninguna captura, se utiliza toda la coincidencia como clave.
Si ' repl ' es una función, entonces se llama a esta función cada vez que se produce una coincidencia, con todas las subcadenas capturadas pasadas como argumentos, en orden; si el patrón no especifica ninguna captura, entonces se pasa toda la coincidencia como único argumento.
Si el valor devuelto por la consulta de la tabla o por la llamada a la función es una cadena o un número, entonces se utiliza como cadena de sustitución; en caso contrario, si es falso o nulo, entonces no hay sustitución (es decir, la coincidencia original se mantiene en la cadena).
x = string.gsub("hello world", "(%w+)", "%1 %1")
--> x="hello hello world world"
x = string.gsub("hello world", "%w+", "%0 %0", 1)
--> x="hello hello world"
x = string.gsub("hello world from Lua", "(%w+)%s*(%w+)", "%2 %1")
--> x="world hello Lua from"
x = string.gsub("home = $HOME, user = $USER", "%$(%w+)", os.getenv)
--> x="home = /home/roberto, user = roberto"
x = string.gsub("4+5 = $return 4+5$", "%$(.-)%$", function (s)
return loadstring(s)()
end)
--> x="4+5 = 9"
local t = {name="lua", version="5.1"}
x = string.gsub("$name-$version.tar.gz", "%$(%w+)", t)
--> x="lua-5.1.tar.gz"