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 默认参数是匹配到的字符串,返回处理过的字符串

猜你喜欢

转载自blog.csdn.net/hookby/article/details/50568939