Обычно я использую две переменные для хранения вывода чего-то вроде этого:
a = {'alarm boy car dentist','alarm car dentist elephant','alarm dentist elephant fabulous','alarm elephant fabulous goat'}
k, v = string.match(a[1], 'alarm dentist (%w+) (%w+)' )
print(k, v)
elephant fabulous
но вместо использования двух переменных я хотел бы сохранить их в массиве или таблице.
Моя конечная цель — создать функцию, в которую я ввожу массив (в данном случае это «a») и шаблон (в данном случае «тревожный стоматолог (%w+) (%w+)»), и что она возвращает желаемое сопровождающее слово/слова, если они найдены, или «ноль» в противном случае. Загвоздка в том, что количество слов, которые ищет шаблон, не определено. В данном случае это 2, но я хочу, чтобы пользователь мог вводить любой шаблон, то есть «тревожный стоматолог (%w+) (%w+) (%w+) (%w+)» или «тревожный стоматолог (%w+)».
Так что до сих пор я думал так: (я использую инструмент командной строки в Ubuntu 12.04LTS, чтобы протестировать его)
a = {'alarm boy car dentist','alarm car dentist elephant','alarm dentist elephant fabulous','alarm elephant fabulous goat'}
function parse_strings (array, pattern)
words = nil
for i=1, #array do
c = string.match(array[i], pattern)
if c ~= nil then
words = c
end
end
return words
end
print (parse_strings (a, 'alarm dentist (%w+) (%w+)'))
elephant
но только первое значение хранится в "c" вместо c[1]='elephant' и c[2]='fabulous'.
В худшем случае я мог бы найти, сколько слов ищет шаблон, но мне все равно нужно было бы найти способ сохранить вывод неопределенного размера из string.match
в одном массиве.