Использование одного шаблона для замены нескольких ;
в одиночку ;
, и другой, чтобы удалить последний ;
это так
local str = "one;two;;three;four;;five;;six;seven;"
local result = str:gsub(';+', ';'):gsub(';*$', '')
Один из возможных способов использования одного шаблона - это следующее:
local result = (str .. ";;;"):gsub(";+", function(s)
if s == ";" or s == ";;" then
return ";"
else
return ""
end
end)
Что я пытаюсь сделать, это добавить три ;
до конца строки, так что любой или два ;
следует заменить одним ;
. Анкет И более ;
(Может быть три или четыре, и это должно быть в конце) заменяется на пустую строку.
Я бы предпочел решение с двумя шаблонами, так как это более ясно.