怎麼用Lua捕获 ^(.*?),([%a%d%p%s])$
如果匹配不出来返回nil,匹配的出来把$1给变量a,$2给变量b。网上stringlibrary的说明简直不是人看的也没找到类似的案例模仿。...
如果匹配不出来返回 nil ,匹配的出来把 $1 给变量 a ,$2 给变量 b 。网上 string library的说明简直不是人看的也没找到类似的案例模仿。
展开
1个回答
展开全部
lua 里没有直接匹配 ^ 和 $ 的机制,也不是通过 *? 来做 * 的最短匹配,而应该用 - 来做 * 的最短匹配。综合以上,参考下面的代码。需要注意的是,在模式中,我用开头和结尾的 () 来获取这两个地方的索引,从而可以判断是否是在字符串的开头和结尾(用来模拟 ^ 和 $)
function match(s)
local pat = '()(.-),([%a%d%p%s])()'
local pos1, cap1, cap2, pos2 = string.match(s, pat)
if pos1 == nil or pos1 ~= 1 or pos2 ~= (#s + 1) then
return nil
end
return cap1, cap2
end
local a, b
a, b = match('abcdefg,5')
print(a,b)
a, b = match('abcdxfg,5 ')
print(a,b)
a, b = match('av,,')
print(a,b)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询