由于某些原因,仅开括号不起作用,其他所有都很好。
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', ' ')
答案 0 :(得分:5)
)
和(
是特殊字符,它们以Lua模式构成捕获组。
当它们在方括号[...]
之外时,您需要对它们进行转义,以匹配文字括号。您需要使用%
对其进行转义。
string.gsub(RequestEncoded, '%(', ' ')
string.gsub(RequestEncoded, '%)', ' ')
但是,由于在随后的所有gsub
调用中都使用相同的替换模式,因此您可以将代码简化为
RequestEncoded = string.gsub(RequestEncoded, '[<>"\'\\()]', ' ')
请注意,()
在方括号表达式内,不需要转义。
请参阅Lua patterns文档:
某些字符(称为魔术字符)在模式中使用时具有特殊含义。魔术人物是
( ) . % + - * ? [ ^ $