lua 正则表达式中发生了一些奇怪的事情,我的脚本有什么问题?
Something Strange happend in lua regexp,What's wrong with my script?
Lua 的正则表达式与 Posix 正则表达式不兼容。例如%d
表示\d
表示Number:0到9。而'%'是转义。
我想匹配 "180*180,512*512"
之类的描述图像大小序列的内容。在 Posix 模式下,这个正则表达式对我有用:^(\d+\*\d+)(,\d+\*\d+)*$
,我将其更改为 Lua 正则表达式模式:^(%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
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
Lua 的正则表达式与 Posix 正则表达式不兼容。例如%d
表示\d
表示Number:0到9。而'%'是转义。
我想匹配 "180*180,512*512"
之类的描述图像大小序列的内容。在 Posix 模式下,这个正则表达式对我有用:^(\d+\*\d+)(,\d+\*\d+)*$
,我将其更改为 Lua 正则表达式模式:^(%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
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