【问题标题】:How to string.find the square bracket character in lua?如何在lua中string.find方括号字符?
【发布时间】:2011-08-29 23:07:45
【问题描述】:

所以我试图在字符串中找到方括号:

s = "testing [something] something else"
x,y = string.find(s,"[")

这给了我一个错误:格式错误(缺少']')。

我也试过了:

x,y = string.find(s,"\[")

给我同样的错误。

还有这个:

x,y = string.find(s,"\\[")

在这种情况下,x 和 y 为零。

关于如何正确执行此操作的任何想法?提前致谢。

【问题讨论】:

    标签: string lua pattern-matching


    【解决方案1】:

    John 的回答会起作用——关闭模式匹配。

    你想要做的——逃避[——是用Lua中的%字符完成的:

     x,y = string.find(s,'%[')
    

    Lua 中的字符串也都有字符串模块作为它们的元表,所以你可以说:

     x,y = s:find('%[')
    

    甚至:

     x,y = s:find'%['
    

    【讨论】:

      【解决方案2】:

      使用string.find 的第四个参数,关闭模式匹配。

      x, y = string.find(s, "[", nil, true)
      

      【讨论】:

      • 这很好,谢谢。但是我现在要做的是找到这种模式:“[..:..]”,这意味着:一个括号,两个'。表示任何字符,':',再次是 2 '.',和另一个括号。我应该将问题拆分为 2 个或更多 string.find 吗?谢谢。
      • Oh Mud anwsered 说:只需使用 '%[' 所以现在我可以使用 '.'作为通配符。再次感谢
      • 对——在这种情况下使用 Mud 的答案。您可以使用% 符号转义诸如[ 之类的字符;所以你可以使用"%[..:..%]"的模式。
      猜你喜欢
      • 2021-01-18
      • 1970-01-01
      • 1970-01-01
      • 2019-12-18
      • 2017-08-08
      • 2012-02-23
      • 2014-08-04
      • 2019-07-02
      • 2017-03-01
      相关资源
      最近更新 更多