V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
roker
V2EX  ›  Lua

奇怪的小问题

  •  
  •   roker · May 4, 2024 · 3654 views
    This topic created in 728 days ago, the information mentioned may be changed or developed.
    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 ,依然没有获取到,这个是怎么回事
    body007
        1
    body007  
       May 4, 2024
    看起来是 lua 语言。根据下面的描述。

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

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

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

    https://www.lua.org/manual/5.3/manual.html#pdf-string.find
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   762 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 21:14 · PVG 05:14 · LAX 14:14 · JFK 17:14
    ♥ Do have faith in what you're doing.