精華區beta mud_sanc 關於我們 聯絡資訊
string.match(s,pattern[, init ]) 功能:回傳目標字串中和模式字串匹配的部分。 說明:也就是從s中,找出和pattern條件相符的部份並回傳,和string.find一樣,它只會 匹配一次,找到一個就會停止動作,但可以選擇開始匹配的位置,只要在末尾在加上 一個參數即可。這個函數的重點在於表示式匹配,畢竟一模一樣的字串被匹配出來回 傳,並沒什麼意義。所以主要是用在找相同格式的字串。 範例:a = '你的身上(wealth)帶有 6667570 影特幣,銀行存款(balance)有63908926 影特 幣。' print (string.find(a,'影特幣%S%S')) 找出前綴'影特幣',後面兩個字元長度的非空白字串相匹配的字串,得到第一個值: 影特幣, print (string.match(a,'影特幣%S%S',38)) 找出前綴'影特幣',後面兩個字元長度的非空白字串相匹配的字串,但是從第38個字 元找起,得到第二個值:影特幣。 實際上應該是找金額比較實用,透過匹配條件的設定,可以一次找兩個: print (string.match(a,'(%d+) %S+ (%d+)')) 匹配前後都是數字組的字串,用()可以單獨取出需要的部份,得到值: 6667570 63908926 如果想指定取某個值,同樣: i,j = string.match(a,'(%d+) %S+ (%d+)') i,j = a:match('(%d+) %S+ (%d+)') 皆可。