使用gmatch将模式拆分成多个表格

我正在尝试使用模式将我的文本分成多个表格。

所以这是我的输入。

\x10Hello\x0AWorld

这是我期望的输出, \x0A<-类似的输入始终为4个字符长

{{'\x10','Hello'},{ '\x0A','World'}}

这是我迄今为止尝试过的。

local function splitIntoTable(input)
    local output = {}
    for code,text in(input):gmatch('(\\ x%x +)(.*)'do
        print(code ..' '..text);
        table.insert(output,{code,text})
    end
    返回输出
结束

我在gmatch中创建了2个正则表达式组,第一个组用于十六进制,第二个组用于文本,我不知道为什么这不起作用。"print"语句从未被执行,因此未使用循环。

点赞
用户9383219
用户9383219

模式'\\x%x+'匹配一个字面的反斜杠、一个x和一系列十六进制数字。它不匹配由十六进制转义生成的ASCII字符,例如'\x0A'

你需要用方括号内的字符类来替换它,例如'[\x10\x0A]'。你要填充字符类,用你在匹配位置上期望的任何ASCII字符(或其他字节)。

不幸的是,这个模式在类似'\x10Hello\x0AWorld'的字符串中只能匹配一次。模式的第二部分也需要修改。

local function splitIntoTable(input)
    local output = {}
    for code, text in (input):gmatch('([\x10\x0A])(.*)') do
        print(code .. ' ' .. text);
        table.insert(output, { code, text })
    end
    return output
end
2019-03-05 04:30:02