Проблема
Я пытаюсь выделить синтаксис исходного кода Lua, поэтому я пытаюсь разбить строку кода на таблицу операторов, пробелов и имен переменных.
Проблема в том, что у меня есть таблица с несколькими разделителями, и я хочу разбить строку на эти разделители, но также сохранить запись разделителей и всех символов присоединенного пробела:
Пример:
"v1 *=3"
становится
{'v1', ' ', '*=', '3'}
Этот вопрос очень похож на Разделить строку и включить разделитель в Lua и Как разделить строку с несколькими разделителями в lua?
Однако мой вопрос отличается тем, что я хочу сохранить запись всех разделителей рядом друг с другом в одной записи, и я не могу создать правильный шаблон.
Что у меня естьпопробовал:
local delim = {",", ".", "(", ")", "=", "*"}
local s = "local variable1 *=get_something(5) if 5 == 4 then"
local p = "[^"..table.concat(delim).."%s]+"
for a in s:gsub(p, '\0%0\')gmatch'%Z+' do
print(a)
end
Фактические результаты:
{'local', ' ', 'variable1', ' *=', 'get_something', '(', '5', ') ', 'if', ' ', '5', ' == ', '4', ' ', 'then'}
Ожидаемые результаты:
{'local', ' ', 'variable1', ' ', '*=', 'get_something', '(', '5', ')', ' ', 'if', ' ', '5', ' ', '==', ' ', '4', ' ', 'then'}
Это небольшая разница, ищите, где находятся пробелы, все связанные пробелыдолжно бытьв своей записи.