歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Lua正則表達式(string函數)

Lua正則表達式(string函數)

日期:2017/3/1 9:30:09   编辑:Linux編程

下面的表列出了Lua支持的所有字符類:
. 任意字符
%a 字母
%c 控制字符
%d 數字
%l 小寫字母
%p 標點字符
%s 空白符
%u 大寫字母
%w 字母和數字
%x 十六進制數字

%z 代表0的字符

在模式匹配中有一些特殊字符

( ) . % + - * ? [ ^ $


%用作特殊字符的轉義字符,因此 '%.' 匹配字符點'.', '%%'匹配字符 '%' .

轉義字符'%'不僅可以用來轉義特殊字符,還可以用於所有的非字母的字符。當對一個字符有疑問的時候,為安全起見請使用轉義字符轉義他。

+ 匹配前一字符1次或多次
* 匹配前一字符0次或多次
- 匹配前一字符0次或多次
? 匹配前一字符0次或1次


舉例:

(1)把字符串中的非字母替換成數字'.'

print(string.gsub("Hello, up-down!", "%A", "."))
--> hello..up.down. 4

(數字4不是字符串結果的一部分,他是gsub返回的第二個結果,代表發生替換的次數。其他的關於打印gsub結果的例子中將會忽略這個數值)

(2)'%d+'匹配一個或多個數字 (整數):

i, j = string.find("the number 1298 is even", "%d+")
--> print(i,j) --> 12 15

(3)匹配日期格式

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

print(string.sub(s, string.find(s, ""%d%d/%d%d/%d%d%d%d"")) --> 30/05/1999

(4)截取想要的文件名(文件名的中間部分可能是jpg|png|jpeg|gif)

local str1 = "wKgAgk1_M36eGCazAAHAC_MLulA790.jpg_200x200_2.jpg"
local str2 = "wKgAgk1_M36eGCazAAHAC_MLulA790.png_200x200_2.jpg"

_,index1 = string.find(str1,"%.%a%a%a_")
_,index2 = string.find(str2,"%.%a%a%a_")
print(string.sub(str1,1,index1-1))

--> wKgAgk1_M36eGCazAAHAC_MLulA790.jpg(匹配的是.jpg_或.png_)
print(string.sub(str2,1,index2-1))

--> wKgAgk1_M36eGCazAAHAC_MLulA790.png(匹配的是.jpg_或.png_)
print(string.gsub(str2,"_%d+x%d+_%d%.%a+",""))

--> wKgAgk1_M36eGCazAAHAC_MLulA790.png(匹配的是_200x200_2.jpg)

其他擴展:

print("=================== "..os.date().." =======================")


--查看CPU耗時:

local x3 = os.clock()
local s = 0
for i = 1, 100000 do
path,_ = string.gsub(str2,"_%d+x%d+_%d%.%a+","")
end
local x4 = os.clock()
print(string.format("耗時: %.2f\n", x4 - x3))

Lua 語言 15 分鐘快速入門 http://www.linuxidc.com/Linux/2013-06/86582.htm

Lua程序設計(第2版)中文 PDF http://www.linuxidc.com/Linux/2013-03/81833.htm

Lua程序設計(第二版)閱讀筆記 http://www.linuxidc.com/Linux/2013-03/81834.htm

NetBSD 將支持用 Lua 腳本開發內核組件 http://www.linuxidc.com/Linux/2013-02/79527.htm

CentOS 編譯安裝 Lua LuaSocket http://www.linuxidc.com/Linux/2011-08/41105.htm

Lua 的詳細介紹:請點這裡
Lua 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved