Разбиение на подстроки lua

Рейтинг: 0Ответов: 1Опубликовано: 10.10.2014

Есть строка:

Медь, Золото (13, 13), Алмазы (32), Серебро

Всё, что я придумал для её разбора:

for medal in string.gmatch(medalsStr, '([А-яёЁ0-9с-я%.%-— \(\)]+,),?%s?') do
    table.insert(result, medal)
end

Но тогда разбивается по запятым:

Медь
Золото (13
13)
Алмазы (32)
Серебро

А надо:

Медь
Золото (13, 13)
Алмазы (32)
Серебро

Выражаясь на JavaScript, мне нужно получить

.match(/([А-я1-9 ()]*?(\(.*\))?), /g)

Ответы

▲ 1
local str = 'Медь, Золото (13, 13), Алмазы (32), Серебро'

for a in (str..'()')
    :gsub('(.-)(%b())', function(t,p) return t:gsub('%s*,%s*','\0')..p end)
    :sub(1,-3)
    :gmatch'%Z+' 
do
  print(a)
end

Демонстрация работы кода на IDEone:
http://ideone.com/FXEpXI