lua中的正则表达式,lua正则表达式
lua中的正则表达式,lua正则表达式
序
lua中的正则表达式与POSIX的正则表达式有一些区别。产生区别的主要原因在于lua追求与标准库的短小精悍,而完成完整的POSIX正则需要4000行以上的代码。lua不愿意为此牺牲简介性,所以在正则的规则上有所妥协。
lua 正则规则
字符类
下表列出lu支持的所有字符类
字符类 | 说明 |
---|---|
. | 任意字符 |
%a | 字母 |
%c | 控制字符 |
%d | 数字 |
%l | 小写字母 |
%p | 标点字符 |
%s | 空白字符 |
%u | 大写字母 |
%w | 字母和数字 |
%x | 十六进制数字 |
%z | 代表0的字符 |
此外,将上述字符类中的字母大写,则表示其补集。
特殊字符
( ) . % + - * ? [ ] ^ $
这些字符与标准的正则中的作用相同,需要注意的是-
这个字符,作用与*
相同,都匹配前一个字符0或多次出现。
与标准正则不同的是,Lua中的修饰符不能用字符类;不能将模式分组然后使用修饰符作用这个分组。比如,没有一个模式可以匹配一个可选的单词(除非这个单词只有一个字母)。
特别的%b
%b
用来匹配对称的字符.常写为 %bxy
,x和y是任意两个不同的字符;x作为匹配的开始,y作为匹配的结束。比如, %b()
匹配以(
开始, 以 )
结束的字符串。
常用的这种模式有: %b()
, %b%[%]
, %b{}
,和 %b<>
。你也可以使用任何字符作为分隔符。
评论暂时关闭