lua gsub %b <-- 这是如何工作的?

ano*_*non 3 lua gsub

在下面的lua代码中:

function interp(s, tab)
  return (s:gsub('($%b{})', function(w) return tab[w:sub(3, -2)] or w end))
end
Run Code Online (Sandbox Code Playgroud)

%b 是什么意思?

这如何匹配 "${name}" 之类的东西?

Amb*_*ber 5

%bXY匹配以 开头X和结尾的字符序列Y。因此,%b{}匹配{......}大括号之间的任何字符。

示例代码中的整体模式首先匹配一个$字符,后跟 a {、任意数量的字符,然后是 a }

  • 这在 http://www.lua.org/manual/5.1/manual.html#5.4.1 的手册中有解释——请参阅“模式项可以是......” (3认同)