加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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)")
print(x,y)

第一个(%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")
----> x = "o hell"

这个会涉及贪婪匹配的问题,第一个匹配会尽可能多的匹配,而第二个匹配至少得有一个字符,因此就会得到这样的结果。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读