lua 正規表示式使用

2021-07-09 14:16:07 字數 1080 閱讀 4242

在使用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是...