美文网首页
Lua string.gmatch()

Lua string.gmatch()

作者: 半夏半暖半倾城灬 | 来源:发表于2019-02-11 17:14 被阅读0次

string.gmatch (s, pattern) 

描述:lua的高端匹配函数

机制:返回一个迭代器函数,每一次调用这个函数,返回一个在字符串s找到的下一个符合pattern描述的子串。如果参数pattern描述的字符串没有找到,迭代函数返回nil

为方便理解编写测试代码如下:

localstr ="12ab34,eed,56"

local func_itor = string.gmatch(str,"%d+")

-- 第一次调用函数func_itor

print("func_itor ret is ", func_itor())

-- 再次调用函数func_itor

print("func_itor ret is ", func_itor())

-- 使用循环来打印

local sourcestr ="hello world from Lua"

local index = 1

print("\noutput capture using loop:")

for word in string.gmatch(sourcestr,"%a+")do 

print(index, word) 

 index = index + 1

end

-- 查找属性对

local attrstr ="from=world, to=Lua, name=AlbertS"

print("\noutput attr pair capture using loop:")

for k,v in string.gmatch(attrstr,"(%w+)=(%w+)") do 

print(k, v)

end

打印结果

总结

函数string.gmatch()返回的类型是一个函数。

由函数string.gmatch()返回的迭代函数每一次调用都会得到新的匹配结果。

关于匹配符的含义%a表示查找一个字母,%w表示查找一个数字或者字母,%d表示查找一个数字,而后面的+表示1个或者多个,即%a+表示查找连续的1个及以上的字母字符串,除了这几个外还有很多类型的匹配符,以后还要仔细去说,在这里不着用过多的篇幅。

知道了匹配符的含义自然就能了解(%w+)=(%w+)的意义了,它就是用来寻找形如key=value的字符串的。

从最后一组输出结果可以看出,当查找的字符串不包含所要匹配的字符时,返回的迭代函数调用时会返回nil

相关文章

网友评论

      本文标题:Lua string.gmatch()

      本文链接:https://www.haomeiwen.com/subject/tqgqeqtx.html