lua正则替换_Lua正则表达式(string函数)

标签:下面的表列出了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))

标签:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值