查找 Lua 字符串模式中填充的十六进制值(0xXX)

我有一个 Lua 字符串...

str = "test,0x00,0x34,0x23"

我想在该字符串中找到两个元素:

  1. 由字母和数字组成的部分(test)
  2. 逗号分隔的十六进制值(0xXX)

我正在使用以下模式,它有效...

_,_,a,b = string.find(str,"^(%a+),([x%x,]+)$")
print(a,b)

-->    test    0x00,0x34,0x23

但是,我想捕获错误,例如,格式错误的十六进制值。

例如,使用上面的模式示例,它允许并成功返回以下输入内容:

str = "test,0x0x0,0x34,0x23"   -->    test    0x0x0,0x34,0x23
str = "test,0x00,34,0x23"      -->    test    0x00,34,0x23
str = "test,0x00,0x34,23x0"    -->    test    0x00,0x34,23x0

请问需要使用什么模式才能仅接受有效的填充十六进制形式(string.format("0x%02x",72))?

点赞