lua 模式匹配 : delimited captures

标签 lua pattern-matching lpeg

我正在尝试解析一个字符串,例如:&1 first &2 second &4 fourth \\ ,并从中建立一个表

t = {1=first, 2=second, 4=fourth}

我一般对正则表达式不是很有经验,所以我天真的尝试(暂时忽略 \\ 和表部分)是
local s = [[&1 first &2 second &4 fourth \\]]

for k,v in string.gmatch(s, "&(%d+)(.-)&") do
    print("k = "..k..", v = "..v)
end

当我期望看到两个捕获的对时,它只给出了第一个捕获的对。我做了一些阅读并找到了 lpeg图书馆,但它对我来说非常陌生。是 lpeg这里需要吗?谁能解释我的错误?

最佳答案

  • &(%d+)(.-)&匹配 &1 first &
  • 离开 2 second &4 fourth \\匹配于
  • 您的模式与任何其他项目不匹配
  • 关于lua 模式匹配 : delimited captures,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17096952/

    相关文章:

    lua - 如何使用 LPeg 正确地进行前瞻

    lua - Lua中模式匹配的几个模式匹配问题

    lua - 获取表中索引处的值

    c++ - 正则表达式过滤字符串

    arrays - Lua单词搜索

    parsing - LPeg 语法怪异

    android - 如何忽略 corona sdk 文本换行中的 tashkeel 字符计数?

    Lua __metatable 绕过?

    algorithm - 应该使用什么相似性度量来对这些序列进行分类?

    matlab - 快速图像扫描