Hei*_*ock 2 lua gsub lua-patterns
出于某种原因,只有开放和关闭支架不会工作,其他所有都很好.
RequestEncoded = string.gsub(RequestEncoded, '<', ' ')
RequestEncoded = string.gsub(RequestEncoded, '>', ' ')
RequestEncoded = string.gsub(RequestEncoded, '"', ' ')
RequestEncoded = string.gsub(RequestEncoded, '\'', ' ')
RequestEncoded = string.gsub(RequestEncoded, '\\', ' ')
-- RequestEncoded = string.gsub(RequestEncoded, '(', ' ') keeps failing
-- RequestEncoded = string.gsub(RequestEncoded, ')', ' ')
-- RequestEncoded = string.gsub(RequestEncoded, "\x28", " ") --keeps failing
-- RequestEncoded = string.gsub(RequestEncoded, "\x29", ' ')
-- RequestEncoded = string.gsub(RequestEncoded, '\050', ' ') --keeps failing
-- RequestEncoded = string.gsub(RequestEncoded, '\051', ' ')
Run Code Online (Sandbox Code Playgroud)
)
并且(
是在Lua模式中形成捕获组的特殊字符.
当它们在方括号之外时,你需要逃避它们[...]
,以匹配字面括号.你需要逃避他们%
.
string.gsub(RequestEncoded, '%(', ' ')
string.gsub(RequestEncoded, '%)', ' ')
Run Code Online (Sandbox Code Playgroud)
但是,由于您在所有后续gsub
调用中使用相同的替换模式,因此可以将代码简化为
RequestEncoded = string.gsub(RequestEncoded, '[<>"\'\\()]', ' ')
Run Code Online (Sandbox Code Playgroud)
请注意,这里()
是括号表达式内部,不需要转义.
请参阅Lua模式文档:
某些字符(称为魔术字符)在模式中使用时具有特殊含义.神奇的人物是
( ) . % + - * ? [ ^ $