首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lua gsub chars '(‘’and ')‘失败

Lua gsub chars '(‘’and ')‘失败
EN

Stack Overflow用户
提问于 2018-09-19 15:27:59
回答 1查看 401关注 0票数 2

由于某些原因,只有开括号和闭括号不能工作,其他的都可以。

代码语言:javascript
复制
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', ' ')
EN

回答 1

Stack Overflow用户

发布于 2018-09-19 15:36:07

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

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

代码语言:javascript
复制
string.gsub(RequestEncoded, '%(', ' ')
string.gsub(RequestEncoded, '%)', ' ')

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

代码语言:javascript
复制
RequestEncoded = string.gsub(RequestEncoded, '[<>"\'\\()]', ' ')

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

请参阅Lua patterns文档:

某些字符,称为魔术字符,在模式中使用时具有特殊含义。神奇的字符是

( ) . % + - * ? [ ^ $

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52400416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档