string - 与 Lua 5.1 中的 "[\0-\x7F\xC2-\xF4][\x80-\xBF]*"等效模式

标签 string lua lua-patterns

何时 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/

相关文章:

mysql - 根据行检测列的类型

string - 使用 string.gmatch() 通过\n 或\r 分割字符串

string - 对于带有负号的数字,正确的模式是什么?

string - 在 Lua 中查找给定 URL 字符串中的模式

java - 拆分矩阵中的二进制值

javascript - 使用循环将两个字符串字符排列成一个字符串

C在for循环中调用Lua函数

properties - 如何使用Lua解析Property文件

python - 在空格之间查找字符串中的数字并解析它

java - 使用递归来反转字符串