Lua разделяет строку на 2d-массив за один шаг

У меня есть следующая строка

abc=1.2;bcd=2.4;xyz=10.9

Я хочу разделить его на следующую таблицу

{ {"abc", "1.2}, {"bcd", "2.4"}, {"xyz", "10.9"} }

В настоящее время я делаю это, разбивая строки сначала на ;, а затем на =.

В PHP я могу использовать следующий шаблон preg_match, чтобы сделать это за один шаг без итерации. Возможно ли это сделать в Lua?

preg_match_all("/(?:([a-z]+)=([0-9.]+)(?:;|$))/", $a, $match, PREG_SET_ORDER);

person Joyce Babu    schedule 05.03.2015    source источник


Ответы (1)


Попробуй это:

s="abc=1.2;bcd=2.4;xyz=10.9"

s=s..";"
t={}
for k,v in s:gmatch("(.-)=(.-);") do
    t[#t+1]={k,v}
end
person lhf    schedule 05.03.2015
comment
Спасибо. Это намного лучше, чем мое текущее решение. - person Joyce Babu; 05.03.2015
comment
В настоящее время я использую table.insert(t, {k, v}). t[#t+1]={k,v} предпочтительнее table.insert? - person Joyce Babu; 05.03.2015
comment
@JoyceBabu, table.insert в порядке. - person lhf; 05.03.2015