【问题标题】:Lua gsub chars '(' and ')' failsLua gsub chars '(' and ')' 失败
【发布时间】:2019-02-23 07:22:09
【问题描述】:

由于某种原因,只有左括号和右括号不起作用,其他都很好。

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 gsub lua-patterns


    【解决方案1】:

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

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

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

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

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

    请注意,() 在括号内,不需要转义。

    参见Lua patterns 文档:

    某些字符(称为魔术字符)在模式中使用时具有特殊含义。魔法人物是

    ( ) . % + - * ? [ ^ $

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-24
      • 1970-01-01
      • 1970-01-01
      • 2023-02-17
      • 2015-01-12
      • 1970-01-01
      • 2013-11-15
      相关资源
      最近更新 更多