何时 answering this question ,我编写了这段代码来迭代字符串中的 UTF-8 字节序列:
local str = "KORYTNAČKA"
for c in str:gmatch("[\0-\x7F\xC2-\xF4][\x80-\xBF]*") do
print(c)
end
在Lua 5.2中可以正常工作,但是在Lua 5.1中却报错:
malformed pattern (missing ']')
我记得在Lua 5.1中,不支持字符串文字\xhh
,所以我将其修改为:
local str = "KORYTNAČKA"
for c in str:gmatch("[\0-\127\194-\244][\128-\191]*") do
print(c)
end
但是错误仍然存在,如何修复它?
最佳答案
请参阅Lua 5.1 manual on patterns.
A pattern cannot contain embedded zeros. Use %z instead.
在 Lua 5.2 中,这一点已更改,以便您可以使用 \0
代替,但在 5.1 中则不然。只需将 %z
添加到第一组并将第一个范围更改为 \1-\127
。
关于string - 与 Lua 5.1 中的 "[\0-\x7F\xC2-\xF4][\x80-\xBF]*"等效模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22956136/