【Lua基础系列】之模式匹配

                           【Lua基础系列】之模式匹配

 

    大家好,我是Lampard~~

    欢迎来到Lua基础系列的博客

    PS:本博客知识参考资料为:《Lua程序设计第四版》,该书由Lua的创始人2018年所编著,所以大家可以放心去吸收知识

   

    前文再续,书接上一回。

    今天讲的是lua中模式匹配的问题,由于lua中没有正则表达式,那么它是如何实现模式匹配的呢。

 

    模式匹配相关的函数:

    string.find(),string.gsub(),string.match(),string.gmatch()

    下面我们一个一个往下看:

  

  (一)string.find()

  string.find(原字符串,目标字符串)里面填入两个参数,

 作用是从目源字符串中找到目标字符串的起始和终止索引,我们可以看看下面这个例子:

string.find()这个函数,能够找到目标字符串的起始位置和初始位置,但是只能返回第一个出现的目标字符串,若找不到目标

字符串则返回nil值。

 

(二)string.match()

string.match()也同样在一个字符串中搜索模式,但是与string.find()不同的是,match返回的是字串本身。

-- 比如说我们这样做

s = “hello world”

s1 = string.match(s,"hello")

-- 那么此时s1就等于hello

是不是有人已经跟我一样准备吐槽了:这特码有啥用???

别急,match的强大之处是在于可以通过字符分类找到想找的答案,比如这样:

至于%d是个什么东西,我们往下继续说

 

(三)string.gsub()

string.gsub()这个函数我们之前接触过,它的作用是从原字符串中寻找目标字符串,然后将之改成想要的字符串。

语法:string.gsub(原字符串,目的字符串,更改后的字符串,更改的次数)

其中参数四的作用是目的字符串要被更改的次数,比较少用,不使用时默认全部都要更改

 

(四)string.gmatch()

string.gmatch()语法和string.match()一样,但是返回的是一个函数

我们在使用string.match()string.find()的时候,找到的都是第一个出现的字符串,

但是加入我想把所有目的字符串都找出来呢?string.gmatch()就可以帮我们解决这个问题了

其中%a是找到英文字符,%a+是找到所有连着的字符,%d我们上文的意义是找数字,%d+是找连着的数字

那么究竟还有哪一些规格呢?本书给了如下的表格:

.         --任意字符
%a        --字母
%c        --控制字符
%d        --数字
%l        --小写字母
%g        --除空格外的字符
%p        --标点符号
%u        --大写字符
%w        --字母和数字
%x        --十六进制数字

 

是不是很简单? OK,今天的博客就到这里,谢谢大家!!!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lampard杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值