lua 语言 正则表达式问题

s="day30/05/1999"_,_,d,m,y=string.find(s,"(%d-)/(%d-)/(%d-)")print(d..","..m..","..y)... s = "day 30/05/1999"
_,_,d,m,y=string.find(s,"(%d-)/(%d-)/(%d-)")
print(d..","..m..","..y)
输出30,05,
为什么没有捕获到1999?
最后加上标识符$就可以捕获到。求高人解释一下
注意,我并不是做游戏的,我只是编程爱好者。不要扯不相关的话题。我只想知道为什么。发现复制粘贴过来的直接举报。
展开
 我来答
czfshine
推荐于2016-07-13 · TA获得超过190个赞
知道小有建树答主
回答量:171
采纳率:0%
帮助的人:131万
展开全部
%d- 为最短捕获,在"(%d-)/(%d-)/(%d-) 时,最后一个数字(1999)没有结束符,就是不能判断这个数字是否是最短,所以,lua就把它舍弃。 加上$时,标志着字符串结束,可以判断是否最短。
不过呢,你要获取日期,最好使用+,"(%d+)%/(%d-)%/(%d+)",最长捕获,这是在《lua程序设计》里的例子。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式