lua 模式匹配
发布时间:2020-12-14 22:11:53 所属栏目:大数据 来源:网络整理
导读:1 x,y = string.match("hello world","(%a+)%s*(%1)") print(x,y) 第一个(%a+)一定会匹配到hello,接着%s*匹配到一个空格,(%1)是第一次的匹配结果,所以是hello,但空格后面并不是hello,所以结果一定不会是hello hello。其实根据模式串可以看出,它匹配
1 x,y = string.match("hello world","(%a+)%s*(%1)") 第一个(%a+)一定会匹配到hello,接着%s*匹配到一个空格,(%1)是第一次的匹配结果,所以是hello,但空格后面并不是hello,所以结果一定不会是hello hello。其实根据模式串可以看出,它匹配的一定是一个(xyz??? xyz)这种重复对称的字符串,因此会匹配出L???? L(该是小写)。 ? 2 x = string.gsub("hello world from Lua","(%w+)%s*(%w+)","%2 %1") --> x="world hello Lua from" ? 分析模式串,一定是在找一个被空格分隔的两个字符串(但也不一定真的有空格,因为是*号),匹配到之后(2个匹配),交换第一个匹配和第二个匹配。 ? 加入是下面的这种情况看, x = string.gsub("hello","%2 %1") 这个会涉及贪婪匹配的问题,第一个匹配会尽可能多的匹配,而第二个匹配至少得有一个字符,因此就会得到这样的结果。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |