Regex 使用lua脚本解析csv
我有一个csv文件,其中包含如下数据:Regex 使用lua脚本解析csv,regex,csv,lua,Regex,Csv,Lua,我有一个csv文件,其中包含如下数据: +12345678901,08:00:00,12:00:00,1111100,35703,test.domain.net +12345678901,,,0000000,212,test.domain.net local mylist = {} for line in io.lines("data/dd.csv") do local id, start, finish, dow, int, domain = line:match("(+%d
+12345678901,08:00:00,12:00:00,1111100,35703,test.domain.net
+12345678901,,,0000000,212,test.domain.net
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
我正在尝试编写一个lua代码,它将循环遍历每一行,并创建一个值数组,如下所示:
+12345678901,08:00:00,12:00:00,1111100,35703,test.domain.net
+12345678901,,,0000000,212,test.domain.net
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或更多。。。
我似乎找不到我的错误/打字错误
谢谢 似乎您只需将数字和
:
分组到[…]
中即可:
match("(%+%d+),([%d:]*),([%d:]*),(%d*),(%d*),(.*)")
^ ^^^^^^ ^^^^^^
现在,[%d:]*
匹配零个或多个数字或:
符号。您的模式找不到匹配项,因为%d*:*
匹配了0+个数字,后跟0+:
符号,并且您有多个这样的序列
此外,您需要转义第一个+
,以确保它与文本+
匹配
请参见此模式适合我:
"(.-),(.-),(.-),(.-),(.-),(.-)$"
请尝试
“(++%d+)、([0-9:]*)、([0-9:]*)、(%d*)、(%d*)、(.*)”
,这些都是有效的。嘘。我从来没有想到过