Лично я предпочитаю писать парсер даже для самых простых шаблонов.Он гораздо более гибкий, чем Regex, и остается читаемым, даже когда он становится больше.Ниже я показываю парсер для выражения, которое вы хотите сопоставить, используя LPEG .
. Вы можете найти хороший учебник LPEG здесь: http://leafo.net/guides/parsing-expression-grammars.html
local lpeg = assert(require("lpeg"))
local C, Ct, P, R, S = lpeg.C, lpeg.Ct, lpeg.P, lpeg.R, lpeg.S
-- optional whitespace (zero or more)
local ws = S" \n\r\t"^0
-- quoted integer, converted to number
local quot = P"'" * C(R"09"^1) / tonumber * P"'"
-- integer followed by zero or more commas followed by integer
local list = quot * ws * (P"," * ws * quot)^0
-- [ followed by list of integers captured in a table followed by ]
local rule = P"[" * ws * Ct(list) * ws * P"]"
-- match the string and collect results
local nums = rule:match("['432', '212']")
-- print result table
print(table.concat(nums,","))
$ lua test.lua
432,212