Вот и решение LPeg
local lpeg = require 'lpeg'
local hex = lpeg.S('0123456789abcdefABCDEF') ^ 1 / function(s) return tonumber(s, 16) end
local parser = (lpeg.P("\\x")*hex + lpeg.P(1) / error) ^ 1
local text = "\\x0f\\x14\\xab"
print(parser:match(text))
Обычная Lua версия, если она лучше для простых случаев, но если вам нужна большая расширяемость, LPeg - хорошая альтернатива: D