我尝试了以下操作:
local str = "???"
string.gsub(str, "(??)*", "")
但它会删除所有的'?'字符。我想要单曲“?”未被取代,但不止一个'?'替换为空字符串。
例如:
"?" = not replaced
"??" = replaced
"???" = replaced
任何帮助将不胜感激。
答案 0 :(得分:3)
问号在Lua模式中是神奇的:它们表示上一类的0 or 1 occurrence。
Lua以%
字符的形式转义魔术字符。
正确的任务模式是%?%?+
,这意味着一次实际的?
字符,然后是一个或多个实际的?
字符(请参见上面的链接)。
此代码
+
输出
function test(s)
print(s,s:gsub("%?%?+","-"))
end
for n=0,4 do
test("["..string.rep("?",n).."]")
end
其中[] [] 0
[?] [?] 0
[??] [-] 1
[???] [-] 1
[????] [-] 1
显示替换的位置。