Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 使用lua脚本解析csv_Regex_Csv_Lua - Fatal编程技术网

Regex 使用lua脚本解析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

我有一个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+),(%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*)、(.*)”
,这些都是有效的。嘘。我从来没有想到过