Więc mam poniższy kod, żeby podzielić ciąg między whitespaces:Lua: split ciąg słowami chyba cytowany
text = "I am 'the text'"
for string in text:gmatch("%S+") do
print(string)
end
Rezultat:
I
am
'the
text'
ale muszę to zrobić:
I
am
the text --[[yep, without the quotes]]
Jak mogę to zrobić?
Edycja: tylko po to, aby uzupełnić pytanie, chodzi o przekazanie parametrów z programu do innego programu. Oto żądanie ściągania, które działam, obecnie w recenzji: https://github.com/mpv-player/mpv/pull/1619
wolałbym coś używając ciąg parsowania. W każdym razie, podczas gdy ja nie powiedziałem w poście, potrzebuję czegoś do pracy zarówno z pojedynczymi, jak i podwójnymi cytatami, ponieważ ideą tego kodu jest parsowanie parametrów z powłoki. – m45t3r
Łatwo jest zaktualizować to rozwiązanie, aby działało z pojedynczymi i podwójnymi cudzysłowami; po prostu zastąp ''^'" '' [[^^["']]]' i '"' $ "' za pomocą '[[[''] $]]'. Możesz również sprawdzić, czy otwierający cytat pasuje do zamykającego. –
Można to zrobić za pomocą analizowania ciągów, ale rozwiązanie może być bardziej złożone (a nie z jednym wyrażeniem, ponieważ wzory Lua nie są wystarczająco silne, aby wyrazić to, czego potrzebujesz). –