有沒有辦法在Lua中轉義整個變量?如:如何在Lua中轉義變量
local blah = some_pattern
string.gsub(blah, "-", "%-")
變量「等等」更改,並在其他模式匹配中使用。每當「嗒嗒」中有一個魔法字符,第二個模式匹配,即在別處完成,失敗。
所以我需要處理至少逃避各種魔法字符,在「等等」。
在此先感謝!
有沒有辦法在Lua中轉義整個變量?如:如何在Lua中轉義變量
local blah = some_pattern
string.gsub(blah, "-", "%-")
變量「等等」更改,並在其他模式匹配中使用。每當「嗒嗒」中有一個魔法字符,第二個模式匹配,即在別處完成,失敗。
所以我需要處理至少逃避各種魔法字符,在「等等」。
在此先感謝!
這裏有點不清楚你在這裏要求什麼:一個方法來調用你的轉義函數,每當一個變量的值被設置,或者如何轉義字符串模式匹配。
變量只是一個值的存儲。設置局部變量時不會導致一般操作發生。因此,如果您更改blah
的值,則需要您再次正確地轉義字符串。
如果你問如何逃生模式匹配的字符串,它會是這樣的:
blah = blah:gsub(blah, "([...])", "%%%1")
哪裏...
是,你需要轉義字符的列表。 Lua參考手冊有一個您可以使用的列表。請注意,由於這是一種模式,因此這些字符必須在處轉義。
最簡單的方法是逃避所有的標點字符,而不是擔心魔法人物:
newpattern = string.gsub(pattern, "%p", "%%%1")
local escape_lua_pattern
do
local matches =
{
["^"] = "%^";
["$"] = "%$";
["("] = "%(";
[")"] = "%)";
["%"] = "%%";
["."] = "%.";
["["] = "%[";
["]"] = "%]";
["*"] = "%*";
["+"] = "%+";
["-"] = "%-";
["?"] = "%?";
}
escape_lua_pattern = function(s)
return (s:gsub(".", matches))
end
end
難道不該' 「%%% 0」' ? –
'%1'工作正常。 – lhf