V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
roker
V2EX  ›  Lua

奇怪的小问题

  •  
  •   roker · 14 天前 · 813 次点击
    local inputString = '[[123],[456],[789]]'
    local st=(string.find(inputString,"]",-1))
    上面能正常匹配。
    local end=(string.find(inputString,"[",-1))
    然后就报错 string = '[string "..."]:17: malformed pattern (missing ']')'
    google 说需要把"["把[转义成正则表达式的[加%
    local end=(string.find(inputString,"%[",-1))
    然后 end 的值为 nil ,依然没有获取到,这个是怎么回事
    2 条回复
    body007
        1
    body007  
       13 天前
    看起来是 lua 语言。根据下面的描述。

    string.find(目标字符串, 搜索字符串, [(init: 起始位置,默认为 1,可为负数表示从后往前), [(plain: false=简单模式,true=正则匹配,默认 false)]])

    你第 3 个参数是 -1 ,那么表示从最后一个字符往后匹配,当然能匹配 ']' 无法匹配 '[' 了

    试试:local st=(string.find(inputString,"%[",-6)),刚好匹配倒数第 1 个 '['
    wellerman
        2
    wellerman  
       13 天前
    local end=(string.find(inputString,"%[",1))
    查找索引开始位置:设为 1 就行了。

    https://www.lua.org/manual/5.3/manual.html#pdf-string.find
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2456 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 04:10 · PVG 12:10 · LAX 21:10 · JFK 00:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.