Lua的正则表达式与Posix RegExp不兼容。例如,%d
表示\d
表示数字:0到9.而'%'表示转义。
我希望匹配描述图像大小顺序的"180*180,512*512"
之类的内容。在Posix模式下,此正则表达式对我有效:^(\d+\*\d+)(,\d+\*\d+)*$
,我将其更改为Lua regexp模式:^(%d+%*%d+)(,%d+%*%d+)*$
,但它不起作用。这是我的代码
#!/usr/local/bin/lua
source = '96*96,180*180';
format = "^(%d+%*%d+)(,%d+%*%d+)*$";
if (not string.find(source, format)) then
print 'wrong!'
else
print 'ok!'
end
答案 0 :(得分:1)
Lua 不有正则表达式。它有自己的模式,如described in PiL。
对于您的特定情况,您可以简单地替换正则表达式:
^(\d+\*\d+)(,\d+\*\d+)*$
到以下模式:
^(%d+%*%d+)(,%d+%*%d+)$
请注意,我在第二个匹配组后删除了*
,因为Lua不支持它。您必须使用gmatch
来捕获多个群组:
local tMatches = {}
for sSize in str:gmatch "(%d+%*%d+)" do
table.insert( tMatches, sSize )
end