使用Lua的string.find
函数,您可以传递一个可选的第四个参数来启用纯搜索。来自Lua wiki:
模式参数还允许更复杂的搜索。见 PatternsTutorial了解更多信息。我们可以关掉这个模式 通过使用可选的第四个参数plain匹配功能。川 取一个布尔值,必须以索引为前缀。如,
= string.find("Hello Lua user", "%su") -- find a space character followed by "u" 10 11 = string.find("Hello Lua user", "%su", 1, true) -- turn on plain searches, now not found nil
基本上,我想知道如何使用Lua的string.gsub
函数完成相同的简单搜索。
答案 0 :(得分:2)
我希望标准库中有一些东西,但是没有。因此,解决方案是逃避模式中的特殊字符,以便它们不执行其常用功能。
这是一般的想法:
%
后跟它(例如,%
变为%%
,[
变为%[
答案 1 :(得分:2)
这是一个用于文本替换的简单库函数:
function string.replace(text, old, new)
local b,e = text:find(old,1,true)
if b==nil then
return text
else
return text:sub(1,b-1) .. new .. text:sub(e+1)
end
end
此功能可以称为newtext = text:replace(old,new)
。
请注意,这只会替换old
中text
的第一次次出现。
答案 2 :(得分:2)
使用此功能可以转义搜索字符串中的所有魔术字符(仅限那些)。
function escape_magic(s)
return (s:gsub('[%^%$%(%)%%%.%[%]%*%+%-%?]','%%%1'))
end