Lua程式設計(十四)

2021-09-02 23:01:46 字數 1946 閱讀 5478

對於lua語言的直譯器而言,模式就是普通的字串。模式同其他的字串一樣遵循相同的規則。只有當模式被傳入模式匹配相關的函式時才會將其按照模式進行解析。

lua語言中的模式使用百分號%作為轉移符。總體上來講所有被轉義的字母都具有特殊的含義,而所有被轉義的非字母則代表其本身。(『%.』匹配乙個點)。

首先是字元分類的模式。字元分類就是模式中能夠與乙個特定集合中的任意字元相匹配的一項

例如,分類%d匹配的是任意數字。可以使用"%d%d/%d%d/%d%d%d%d」模式來匹配dd/mm/yyyy格式的日期。

s = "deadline is 30/05/1999, firm"

date = "%d%d/%d%d/%d%d%d%d"

print(string.match(s, date)) --> 30/05/1999

下表是lua語言中預置的字元分類及其對應的含義。

.任意字元

%a字母

%c控制字元

%d數字

%g除空格外的可列印字元

%l小寫字母

%p標點符號

%s空白字元

%u大寫字母

%w字母和數字

%x十六進製制數字

這些類的大寫形式則表示類的補集。如『%a』代表任意非字母字元。

在模式中如果使用了下列字元( ) . % + - * ? [ ] ^ $,它們將具有特殊含義。百分號用於這些魔法字元的轉義,因此『%?』將匹配乙個問號。百分號不僅可以對這些魔法字元轉義還可以用於其他所有字母和數字外的字元。

如果想自定義字元分類,可以使用字符集,只需要在方括號內將單個字元和字元分類組合即可。例如'[%w_]'匹配所有以下劃線結尾的字母和數字,『[01]』匹配二進位制數字,'[%[%]]'匹配方括號。

還可以在字符集中包含一段字元捍衛,做法為寫出字元範圍的第乙個字元和最後乙個字元用橫線將他們連線在一起。

在字符集錢加乙個補字元^可以得到這個字符集所對應的補集。

通過描述模式中重複和可選部分的修飾符(modifier)可以讓模式更加有用。

+重複一次或多次

*重複零次或多次

-重複零次或多次(最小匹配)

可選(出現零次或一次)

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;

redis學習 十四 安裝lua

linux下安裝這裡安裝的是5.3.5版本 curl r o org ftp lua 5.3 5.tar gztar zxf lua 5.3 5.tar gzcd lua 5.3 5make linux test make install注意 執行make linux test時可能會報錯 read...

socket程式設計(十四)

1 無連線 2 基於訊息的資料傳輸服務 3 不可靠 4 一般情況下udp更加高效 1 udp保溫可能丟失,重複 2 udp報文可能亂序 3 udp缺乏流量控制 4 udp協議資料報文截斷 5 recvfrom返回0,不代表連線關閉,因為udp是無連線的 6 icmp非同步錯誤 上面 server.c...

Lua程式設計(三)

通過昨天用lua程式語言解決八皇后問題,我對於lua語言的程式編寫有了大致的了解。今天開始了解lua的數值相關概念。在lua5.3中為數值格式提供了兩種選擇 一種為64位的integer型別,另一種則是雙精度的float型別。如果是資源受限的平台,如微控制器等我們可以使用精簡的32位數值格式。lua...