Lua解析器匹配后解析。

我正在尝试使用 Lua 5.3 解析类似以下字符串的内容。

a=data0
b=data
c=data
a=data1
b=data
c=data
a=data2
...

我想要在出现“a=data1”后解析“b=data和c=data”。我知道可以通过string.find(exampleString, 'a=data1')来获取开始/结束位置,然后开始解析“b”,但我不知道“data”在那之后会有多长,所以我不知道从哪里开始解析“c”?是否有任何方式可以像“解析下一行”类型的东西一样进行解析?我应该如何处理这个问题?

点赞
用户501459
用户501459

我知道在b之后开始解析的位置,但我不知道"data"之后会有多长,所以我不知道在哪里开始解析"c"? 有没有任何办法可以做一个解析下一行的类型?

是的,你只需匹配到EOL字符即可:

for letter, data in s:gmatch('(%w)=(.-)\n') do
    print(letter,data)
end

.-= 0个或多个字符,尽量少

\n= EOL字符

括号捕获了我们想要gmatch返回的模式的部分。

你也可以说“([^\n]*)”,这意味着0个或多个不是换行符的字符。

2015-07-22 15:56:01