lua 正则表达式使用


在使用lua的string库匹配模式的时候,对于一些比较麻烦的处理,搜网页总是不得其所,下面是接触到的一些经典用法

  1. string.find
  2. string.gsub
  3. string.sub

* 对这三个方法的基本使用不概述了*
现有一个需求如下
替换 字符串 “战斗力增加{(a*0.8+b)*0.2-1}%“为*战斗力增加5%”
注5是带入a、b值算出的结果
现在有两种方式
第一种,用比较笨的方法

local resStr = "战斗力增加{(a*0.8+b)*0.2-1}%"
-- 取出算式{(a*0.8+b)*0.2-1}
local mathStr = string.sub(resStr,string.find(resStr,"%{")+1,string.find(resStr,"%}")-1)
-- 对算式字符串进行变量替换
mathStr = string.gsub(mathStr,"a","0")
mathStr = string.gsub(mathStr,"b","1")
-- 执行算式
local result = loadstring("return " .. mathStr)()
-- 将结果带入替换算式
local desStr = string.gsub(resStr, "%b{}", result)

第二种 利用模式匹配传入函数

local resStr = "战斗力增加{(a*0.8+b)*0.2-1}%"
local desStr = string.gsub(resStr,"%b{}",function(catchStr)
    catchStr = string.gsub(catchStr,"a",0)
    catchStr = string.gsub(catchStr,"b",1)
    return loadstring("return " .. catchStr)()
end)

gsub的第三个参数传入function 默认参数是匹配到的字符串,返回处理过的字符串

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值