在使用lua的string庫匹配模式的時候,對於一些比較麻煩的處理,搜網頁總是不得其所,下面是接觸到的一些經典用法
string.find
string.gsub
string.sub
* 對這三個方法的基本使用不概述了*
現有乙個需求如下
替換 字串 「戰鬥力增加%「為*戰鬥力增加5%」
注5是帶入a、b值算出的結果
現在有兩種方式
第一種,用比較笨的方法
local resstr = "戰鬥力增加%"
-- 取出算式
local mathstr = string.sub(resstr,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 = "戰鬥力增加%"
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 預設引數是匹配到的字串,返回處理過的字串 Lua正規表示式
正規表示式作為一種通用的算式,大量用於文字處理邏輯中,其主要好處是速度能夠達到極致,而且 量通常會非常少,本篇主要介紹lua中的正則使用,由於這樣的文章網上隨處都可以搜到,而且不乏整理的不錯的,這裡就不想再重新做這件事情。正規表示式主要處理匹配問題,即通過給定語義萬用字元串,返回匹配成功的字串列表。...
lua正規表示式
一樣,都匹配乙個字元的0次或多次出現,但是他進行的是最短匹配。某些時候這兩個用起來沒有區別,但有些時候結果將截然不同。比如,如果你使用模式 a w 來查詢標示符,你將只能找到第乙個字母,因為 w 永遠匹配空。另一方面,假定你想查詢c程式中的注釋,很多人可能使用 也就是說 後面跟著任意多個字元,然後跟...
lua 正規表示式
點 與任何字元配對 a 與任何字母配對 c 與任何控制符配對 例如 n d 與任何數字配對 l 與任何小寫字母配對 p 與任何標點 punctuation 配對 s 與空白字元配對 u 與任何大寫字母配對 w 與任何字母 數字配對 x 與任何十六進製制數配對 z 與任何代表0的字元配對 x 此處x是...