【发布时间】:2013-06-10 10:07:43
【问题描述】:
我正在尝试解析一个字符串,例如:&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 吗?谁能解释我的错误?
【问题讨论】:
-
试试
s:gmatch'&(%d+)([^&]*)' -
@EgorSkriptunoff 啊哈,谢谢!这里
([^&]*)匹配不包含&的最长字符序列对吗? -
@EgorSkriptunoff,“添加评论”下有一个大文本框,您可以在其中输入答案;)
标签: lua pattern-matching lpeg