Я хочу сделать сопоставление с образцом в таблице ниже. Если есть совпадение, примите значения 2-го и 3-го столбца в качестве ответа. Первый столбец может иметь 1 или несколько шаблонов, строка 5 имеет только 1 шаблон для сопоставления.
local pattern_matrix = {
{{ "^small%-", "%-small%-", }, "small", 50},
{{ "^medium%-", "%-medium%-", }, "medium", 200},
{{ "^big%-", "%-big%-", }, "big", 3},
{{ "^large%-", "%-large%-", "^L%-", }, "large", 42},
{{ "%-special%-", }, "special", 5},
}
Я использую следующий код, чтобы найти строку, соответствующую вводу:
local function determine_row(name)
for i = 1,#pattern_matrix,1 do
for _,pattern in pairs(pattern_matrix[i][1]) do --match against column 1
if name:match(pattern) then
return i --match found in row i
end
end
end
return 0
end
результат должен быть
determine_row("itsamedium") = 2
determine_row("blaspecialdiscount") = 5
determine_row("nodatatomatch") = 0