首页 > Lua 的正则不兼容 Posix 语法,下面的代码就跟预期的不一致

Lua 的正则不兼容 Posix 语法,下面的代码就跟预期的不一致

Lua 的正则跟 Posix 标准正则不兼容,比如lua 里%d 代表数字,而标准正则是\d,
还有%是代表转义,而标准的语法是\作转义符号,下面的代码会诡异,竟然没有匹配上:

#!/usr/local/bin/lua

resize = '96*96,180*180';
format = "^(%d+%*%d+)(,%d+%*%d+)*$";

if (not string.find(resize, format)) then
    print 'wrong!'
else
    print 'ok!'
end

输出结果是 wrong!

请大神指点!!


Lua 的 +*? 等只是针对字符的,不能像其它语言一样用于 () 分组。如果需要 POSIX 正则,可以用 Lrexlib 之类。


string.find(resize,"%d+%*%d+,%d+%*%d+");

如果要取得数字:

local pos1,pos2,m1,m2,m3,m4=string.find(resize,"(%d+)%*(%d+),(%d+)%*(%d+)");
【热门文章】
【热门文章】