lua 语言 正则表达式问题

s = "day 30/05/1999"
_,_,d,m,y=string.find(s,"(%d-)/(%d-)/(%d-)")
print(d..","..m..","..y)
输出30,05,
为什么没有捕获到1999?
最后加上标识符$就可以捕获到。求高人解释一下
注意,我并不是做游戏的,我只是编程爱好者。不要扯不相关的话题。我只想知道为什么。发现复制粘贴过来的直接举报。
最新回答
蘇瑾熙

2024-04-11 01:47:16

%d- 为最短捕获,在"(%d-)/(%d-)/(%d-) 时,最后一个数字(1999)没有结束符,就是不能判断这个数字是否是最短,所以,lua就把它舍弃。 加上$时,标志着字符串结束,可以判断是否最短。
不过呢,你要获取日期,最好使用+,"(%d+)%/(%d-)%/(%d+)",最长捕获,这是在《lua程序设计》里的例子。