我正在尝试解析一个字符串,例如:&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/