我正在尝试解析一个字符串,例如:&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
吗?谁能解释我的错误?
答案 0 :(得分:2)
&(%d+)(.-)&
匹配&1 first &
2 second &4 fourth \\
进行匹配
答案 1 :(得分:1)
如果您知道这些值是一个单词,那么这应该有效:
string.gmatch(s, "&(%d+)%s+([^%s&]+)")
取“&”,然后是一个或多个数字(捕获),接着是一个或多个空格,然后是一个或多个非空格,非&字符(捕获)。