佚名通过本文主要向大家介绍了posix正则表达式,posix,posix是什么意思,posix标准,posix接口等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:Lua 的正则不兼容 Posix 语法,下面的代码就跟预期的不一致
描述:
解决方案1:
描述:
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!
请大神指点!!
解决方案1:
string.find(resize,"%d+%*%d+,%d+%*%d+");
如果要取得数字:
local pos1,pos2,m1,m2,m3,m4=string.find(resize,"(%d+)%*(%d+),(%d+)%*(%d+)");
解决方案2:Lua 的 +
、*
、?
等只是针对字符的,不能像其它语言一样用于 ()
分组。如果需要 POSIX 正则,可以用 Lrexlib 之类。