代码之家  ›  专栏  ›  技术社区  ›  systemdebt

在Lua中使用字符串find的“(”?)及其返回的值

  •  2
  • systemdebt  · 技术社区  · 12 年前
    a, i, c = string.find(s, '"("?)', i + 1)
    

    什么是角色 ? 在这里我相信这是在检查双引号,但我真的不清楚 "("?) .

    我读到了 string.find 返回匹配模式的开始和结束索引。但根据上述代码行, a , i c ,正在返回3个值。这里返回的第三个值是什么?

    1 回复  |  直到 12 年前
        1
  •  3
  •   Yu Hao    12 年前

    ? 匹配可选字符,即一个字符出现零次或一次。所以模式 "("?) 匹配 " ,后跟可选 " ,即,它匹配 " "" 。请注意 "? (零或一 " )被捕获。

    关于的返回值 string.find() 从…起 string.find() :

    如果模式有捕获,那么在成功匹配时,也会在两个索引之后返回捕获的值。

    当匹配成功时,捕获是第三个返回值。