Так что я следующий код, чтобы разделить строку между непечатаемых:Lua: разбить строку на слова, если не цитировал
text = "I am 'the text'"
for string in text:gmatch("%S+") do
print(string)
end
Результат:
I
am
'the
text'
Но мне нужно сделать это:
I
am
the text --[[yep, without the quotes]]
Как это сделать?
Редактировать: только в дополнение к вопросу, идея состоит в передаче параметров из программы в другую программу. Вот запрос на перенос, который я работаю в настоящее время: https://github.com/mpv-player/mpv/pull/1619
Я предпочел бы что-то с помощью строки синтаксического анализа. В любом случае, пока я не сказал в сообщении, мне нужно что-то работать как с одиночными, так и с двойными кавычками, так как идея этого кода заключается в анализе параметров из оболочки. – m45t3r
Это легко обновить это решение, чтобы заставить его работать с одинарными и двойными кавычками; просто замените ''^'' '' на [[^ ["']]] и' '' $" 'на' [[[''] $]] '. Вам также может потребоваться проверить, что вступительная цитата соответствует закрывающей. –
Это можно сделать с помощью синтаксического анализа строк, но решение, вероятно, будет более сложным (а не с одним выражением, поскольку шаблоны Lua недостаточно мощны, чтобы выразить то, что вам нужно). –