str = [[ function test(arg1, arg2) { dosomething(0x12f, "String"); } ]] str = str:gsub("%s*(%w+)%s*", "%1§") str = str:gsub("(%W)%s*", "%1§") for token in str:gmatch("[^§]+") do print(token) end