【发布时间】:2016-10-07 11:38:44
【问题描述】:
我有一个包含如下数据的 csv 文件:
+12345678901,08:00:00,12:00:00,1111100,35703,test.domain.net
+12345678901,,,0000000,212,test.domain.net
我正在尝试编写循环遍历每一行的 lua 代码,并创建一个像这样的值数组:
local mylist = {}
for line in io.lines("data/dd.csv") do
local id, start, finish, dow, int, domain = line:match("(+%d+),(%d*:*),(%d*:*),(%d*),(%d*),(%a*.*)")
mylist[#mylist + 1] = { id = id, start = start, finish = finish, dow = dow, int = int, domain = domain}
print(mylist[#mylist]['id'])
end
问题在于,当代码遇到 start 和 finish 为空值的行时,正则表达式会失败并且所有字段都为零。
我认为使用 * 表示 0 或更多... 我似乎找不到我的错误/错字。
谢谢。
【问题讨论】:
-
试试
"(%+%d+),([0-9:]*),([0-9:]*),(%d*),(%d*),(.*)" -
那行得通。嘘。我从来没有想过这个