将字符串分隔为 table 个单词和空格

Separate string into table of words and spaces between

我目前正在开发一个 lua 脚本,该脚本接受一个字符串并将其分成 table 个单词和单词之间的空格 + 字符。

示例:

-- convert this
local input = "This string, is a text!"

-- to this
local output = {
    "This", " ", "string", ", ", "is", " ", "a", " ", "text", "!"
}

我尝试使用 lua 的模式实现来解决这个问题,但到目前为止没有成功。

非常感谢任何帮助!

local function splitter(input)
  local result = {}
  for non_word, word, final_non_word in input:gmatch "([^%w]*)(%w+)([^%w]*)" do
    if non_word ~= '' then
      table.insert(result, non_word)
    end
    table.insert(result, word)
    if final_non_word ~= '' then
      table.insert(result, final_non_word)
    end
  end
  return result
end