string.gsub(s, 패턴, repl [, n])
pattern의 모든 발생(또는 제공된 경우 첫 번째 n)이 repl(이는 문자열, 테이블 또는 함수일 수 있음)에 의해 지정된 대체 문자열로 대체된 s의 사본을 리턴합니다.
gsub 또한 두 번째 값으로 발생한 총 일치 횟수를 반환합니다.
repl이 문자열인 경우 해당 값은 대체를 위해 사용됩니다. ' % ' 문자는 이스케이프 문자로 작동합니다. ' %n 형식의 ' repl ' 시퀀스 중 1에서 9 사이의 ' n '는 ' n 캡처된 하위 문자열의 값을 나타냅니다(아래 참조). %0' 시퀀스는 전체 경기를 나타냅니다. 시퀀스%%'은 하나의 ' %'를 의미합니다.
repl이 테이블인 경우 첫 번째 캡처를 키로 사용하여 모든 일치에 대해 테이블이 쿼리됩니다. 패턴이 캡처를 지정하지 않는 경우 전체 일치가 키로 사용됩니다.
repl이 함수인 경우 이 함수는 인수로 전달된 캡처된 모든 서브스트링과 함께 일치가 발생할 때마다 호출됩니다. 패턴이 캡처를 지정하지 않는 경우 전체 일치는 하나의 인수로 전달됩니다.
테이블 쿼리 또는 함수 호출이 리턴하는 값이 문자열 또는 숫자인 경우 이는 대체 문자열로 사용됩니다. 또는 false 또는 널(NULL)인 경우 대체가 없습니다(즉, 원래 일치가 문자열에서 보존됨).
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"