Lua gsub 字符 '(' 和 ')' 失败

标签 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', ' ')

最佳答案

)( 是在 Lua 模式中形成捕获组的特殊字符。

当它们位于方括号 [...] 之外时,您需要对其进行转义,以匹配文字括号。您需要使用 % 转义它们。

string.gsub(RequestEncoded, '%(', ' ')
string.gsub(RequestEncoded, '%)', ' ')

但是,由于您在所有后续 gsub 调用中使用相同的替换模式,因此您可以将代码简化为

RequestEncoded = string.gsub(RequestEncoded, '[<>"\'\\()]', ' ')

请注意,这里的 () 位于括号表达式内,不需要转义。

参见Lua patterns文档:

Some characters, called magic characters, have special meanings when used in a pattern. The magic characters are

( ) . % + - * ? [ ^ $

关于Lua gsub 字符 '(' 和 ')' 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52400416/

相关文章:

ruby - 使用 RegExp 格式化字符串以设置分隔符

string - Lua字符串操作模式匹配替代 “|”

lua - 使用 Lua 模式匹配的可选组捕获

lua - Lua 中的函数定义

c - lua中的printf格式化

Ruby 删除以特定字符开头的所有子字符串

lua - 为什么这个 Lua 模式不起作用?

来自 USB 的 C++ 和 Lua

lua - 监督 Lua 中的协程

ruby - 如何 gsub\in ruby​​ 数组?