2016-04-12 5 views
2

Я пытаюсь понять, как разбить строку в Lua с этим форматомРазбиваем строку с двойным ограничителем

hello - mynameis - jeff 

Я просто хочу, чтобы получить имя «Джеф». Разделителем будет - и . Это то, что я на самом деле пытался:

local result = string.gmatch(line, "[-\s]+") 

Который не работает. Как мне это сделать?

+0

«* Разделитель будет' -' и a. * «Разве разделитель не был бы« - »? То есть, тире, окруженной пробелами? –

+0

Оформить заказ на мою библиотеку https://github.com/moteus/lua-split. 'result = split (строка, '-', true)' или 'result = split (строка, '% s *% -% s *')'. – moteus

ответ

0

Одним из обходных решений может быть замена всех символов «-» символом, который не используется в содержимом, который у вас есть, а затем получить последнюю часть с простым отрицательным символьным классом с привязкой концевой строки $:

local example = "hello - mynameis - jeff" 
example = string.gsub(example, " %- ", "\x02") 
local result = string.match(example, "[^\x02]+$") 
print(result) 

См Lua IDEONE demo

с " %- ", все space + - + space подстроки заменить временный характер, а затем только подстрока после последнего временного символа совпадает с шаблоном [^\x02]+$.

Я использовал контрольный символ STX (\x02), но вы можете выбрать другой, который, как вы уверены, будет отсутствовать в содержимом для разбора.