
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?
最后加上标识符$就可以捕获到。求高人解释一下
注意,我并不是做游戏的,我只是编程爱好者。不要扯不相关的话题。我只想知道为什么。 展开
_,_,d,m,y=string.find(s,"(%d-)/(%d-)/(%d-)")
print(d..","..m..","..y)
输出30,05,
为什么没有捕获到1999?
最后加上标识符$就可以捕获到。求高人解释一下
注意,我并不是做游戏的,我只是编程爱好者。不要扯不相关的话题。我只想知道为什么。 展开
4个回答
展开全部
Lua中修饰符 - 和 * 都表示匹配前一字符0次或多次,但 - 进行的是最短匹配,类似传统正则中的非贪婪匹配,而 * 则是最长匹配,即贪婪匹配
由于你正则中最后一个(%d-)后面没有任何东西了,那这个 - 进行了最短匹配,即什么都不匹配,所以没有捕获到1999,而加上$后,由于有了结尾标识位,- 就必须匹配1999才能使整个正则匹配通过,所以就捕获了1999,或者你可以把最后个 - 换成 *,也可以捕获1999的
由于你正则中最后一个(%d-)后面没有任何东西了,那这个 - 进行了最短匹配,即什么都不匹配,所以没有捕获到1999,而加上$后,由于有了结尾标识位,- 就必须匹配1999才能使整个正则匹配通过,所以就捕获了1999,或者你可以把最后个 - 换成 *,也可以捕获1999的
展开全部
function extractChinese(s) for m in string.gmatch(s,'"[\176-\254]+"') do print(m) endendss = 'foo"中文"a"你好"foo'extractChinese(ss)
上面的输出为:
中文
你好
注意:这个函数假设你的“中文”是GB2312编码。如果是UTF-8编码,需要改一下。
PS: 你们公司是哪个公司啊?这样的水平还发布海外版本的游戏?不是说你哦,而是你们公司。
上面的输出为:
中文
你好
注意:这个函数假设你的“中文”是GB2312编码。如果是UTF-8编码,需要改一下。
PS: 你们公司是哪个公司啊?这样的水平还发布海外版本的游戏?不是说你哦,而是你们公司。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
关于Lua正则捕获的,可以参考下这篇文章,说得很详细
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |