′一樣,都匹配乙個字元的0次或多次出現,但是他進行的是最短匹配。某些時候這兩個用起來沒有區別,但有些時候結果將截然不同。比如,如果你使用模式』[_%a][_%w]-『來查詢標示符,你將只能找到第乙個字母,因為』[_%w]-『永遠匹配空。另一方面,假定你想查詢c程式中的注釋,很多人可能使用 『/%.%/』 (也就是說 「/」 後面跟著任意多個字元,然後跟著 「/」). 然而,由於 『.『進行的是最長匹配,這個模式將匹配程式中第乙個」/」 和最後乙個」*/」之間所有部分:
test = 「int x; /* x / int y; / y */」
print(string.gsub(test, 「/%.%*/」, 「」))
–> int x;
然而模式 『.-『進行的是最短匹配,她會匹配」/「開始到第乙個」/」之前的部分:
test = 「int x; /* x / int y; / y */」
print(string.gsub(test, 「/%.-%/」, 「」))
–> int x; int y;
?′匹配乙個字元0次或1次.舉個例子,假定我們想在一段文字內查詢乙個整數,整數可能帶有正負號。 模式 '[+-]?%d+'符合我們的要求,她可以匹配 像 "-12", "23" 和 "+1009"等數字. '[+-]' 是乙個匹配
+′或者-′的字元類;
以^′開頭的模式只匹配目標串的開始部分,相似的,以$′結尾的模式只匹配目標串的結尾部分。這不僅可以用來限制你要查詢的模式,還可以定位(anchor)模式。比如:
if string.find(s, "^%d") then ...
檢查字串s是否以數字開頭,而
if string.find(s, "^[+-]?%d+$") then ...
檢查字串s是否是乙個整數。
'%b'用來匹配對稱的字元.常寫為 '%bxy',x和y是任意兩個不同的字元;x作為匹配的開始,y作為匹配的結束。比如, '%b()'匹配以(′開始, 以 `)′結束的字串:
print(string.gsub(「a (enclosed (in) parentheses) line」, 「%b()」, 「」))
–> a line
常用的這種模式有: 『%b()』, 『%b』, 『%b%』,和 『%b<>』。你也可以使用任何字元作為分隔符。
最後還有一種用法,%數字,數字表示第幾個匹配項,如下例子:
%1 表示符合模式的第乙個匹配
x = string.gsub(「hello world」, 「(%w+)」, 「%1 %1」)
–> x=」hello hello world world」
Lua正規表示式
正規表示式作為一種通用的算式,大量用於文字處理邏輯中,其主要好處是速度能夠達到極致,而且 量通常會非常少,本篇主要介紹lua中的正則使用,由於這樣的文章網上隨處都可以搜到,而且不乏整理的不錯的,這裡就不想再重新做這件事情。正規表示式主要處理匹配問題,即通過給定語義萬用字元串,返回匹配成功的字串列表。...
lua 正規表示式
點 與任何字元配對 a 與任何字母配對 c 與任何控制符配對 例如 n d 與任何數字配對 l 與任何小寫字母配對 p 與任何標點 punctuation 配對 s 與空白字元配對 u 與任何大寫字母配對 w 與任何字母 數字配對 x 與任何十六進製制數配對 z 與任何代表0的字元配對 x 此處x是...
lua 正規表示式使用
在使用lua的string庫匹配模式的時候,對於一些比較麻煩的處理,搜網頁總是不得其所,下面是接觸到的一些經典用法 string.find string.gsub string.sub 對這三個方法的基本使用不概述了 現有乙個需求如下 替換 字串 戰鬥力增加 為 戰鬥力增加5 注5是帶入a b值算出...