string.gsub (s, pattern, repl [, n])

Renvoie une copie de s dans laquelle toutes les occurrences du motif (ou les n premières, si elles sont données) ont été remplacées par une chaîne de remplacement spécifiée par repl, qui peut être une chaîne, un tableau ou une fonction.

gsub renvoie également, en tant que deuxième valeur, le nombre total de correspondances qui se sont produites.

Si " repl est une chaîne, sa valeur est utilisée pour le remplacement. Le caractère " % fonctionne comme un caractère d'échappement : toute séquence dans " repl de la forme " %n, avec n entre 1 et 9, représente la valeur de la n-ième sous-chaîne capturée (voir ci-dessous). La séquence%0représente l'ensemble de la correspondance. La séquence%%correspond à un seul " %.

Si " repl est un tableau, le tableau est interrogé pour chaque correspondance, en utilisant la première capture comme clé ; si le motif ne spécifie aucune capture, la correspondance entière est utilisée comme clé.

Si " repl est une fonction, cette fonction est appelée à chaque fois qu'une correspondance se produit, avec toutes les sous-chaînes capturées transmises comme arguments, dans l'ordre ; si le motif ne spécifie pas de capture, la correspondance entière est transmise comme seul argument.

Si la valeur renvoyée par la requête de table ou par l'appel de fonction est une chaîne ou un nombre, elle est utilisée comme chaîne de remplacement ; sinon, si elle est fausse ou nulle, il n'y a pas de remplacement (c'est-à-dire que la correspondance d'origine est conservée dans la chaîne).

Exemples :
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"