lua通配符

正则表达式主要处理匹配问题,即通过给定语义通配符串,返回匹配成功的字符串列表。

 

在匹配的基础上,正则引擎往往提供了字符串的查找、替换、分割等功能,lua支持查找与替换,但不支持分割,分割函数可以在已有接口上进行扩展,附录中引用了lua社区的实现代码。

 

本篇单纯的简要介绍lua的匹配问题。

 

Lua正则中的特殊字符(元字符)包括如下几种:

( ) . % + - * ?[ ] ^ $

 

转义字符(元字符%):

'%' 用作特殊字符的转义字符,'%.' 匹配点;'%%' 匹配字符 '%',’%’与特定字母结合有特定含义(通配符),如下:

%a: 与任何字母配对
%c: 与任何控制符配对(例如\n)
%d: 与任何数字配对
%l: 与任何小写字母配对
%p: 与任何标点(punctuation)配对
%s: 与空白字符配对
%u: 与任何大写字母配对
%w: 与任何字母/数字配对
%x: 与任何十六进制数配对
%z: 与任何代表0的字符配对

 

对于上面的%x(其中x代表a,c,d,...,z),lua正则支持其大写形式,大写形式代表非%x,即有%X = ^%x,比如%A表示与任意非字母配对。

 

其他通配符(元字符.):

.(点): 与任何字符配对

 

字符集(元字符[]):

出了上面提到的通配符,我们还可以自定义字符集,如[%a%d]就是与字母和数字配对,我们还可以使用’-‘符号来指定一个范围,如[0-7]表示[01234567],[a-z]表示小写字母,通过字符集,我们可以定义其他复杂的通配符。

 

贪婪与吝啬(元字符+、-、?、*)

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

 

元字符+和*是贪婪的,总是进行最长的匹配,而-则是吝啬的,总是进行最短匹配,注意元字符-可以匹配0次。例子:

待匹配的字符串:<font>a</font><font>b</font>

模式串(1):<font>.+</font>此时将匹配整个字符串,贪婪模式下,正则引擎即使发现了第一个匹配,也不会停止,因此效率相对较低。

模式串(2):<font>.-</font>此时将依次匹配<font>a</font>、<font>b</font>,最短匹配模式下,一旦正则引擎发现第一个匹配就停止动作,不会继续匹配,

 

开头与结尾(元字符^、$)

^x表示非x,可以理解为正则引擎发现了x字符,那么就可以从这里作为一个匹配的开头,匹配过程中可能希望有多个开头(特别是吝啬模式),这个符号用的频率会比较高,x$表示以x结尾,这里的结尾指的是整个待匹配字符串的最后一个字符,这个符号使用的场合和频率相对会比较少。

 

取己所需(元字符())

圆括号是一个很好用的元字符,如上<font>a</font>,如果我们只是想让lua正则引擎返回字符a,可以采用模式<font>(.+)</font>,否则它会返回整个字符串。



转自http://blog.csdn.net/xiadasong007/article/details/9187249

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值