怎麼用Lua捕获 ^(.*?),([%a%d%p%s])$

如果匹配不出来返回nil,匹配的出来把$1给变量a,$2给变量b。网上stringlibrary的说明简直不是人看的也没找到类似的案例模仿。... 如果匹配不出来返回 nil ,匹配的出来把 $1 给变量 a ,$2 给变量 b 。网上 string library的说明简直不是人看的也没找到类似的案例模仿。 展开
 我来答
kwydwuf
推荐于2018-03-29 · TA获得超过7410个赞
知道大有可为答主
回答量:1527
采纳率:71%
帮助的人:2006万
展开全部

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)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式