Lua中的模式匹配用正则表达式来描述,它被用于string.find, string.gmatch,string.gsub, 和string.match.匹配一种模式。
字母,代表[a-zA-Z]
字符,对所有符号的统称
字母数字表,字母和数字的统称
空白(空格)字符:例如(‘ ’,'t’)
字符集:一个字符集用于代表一些字符的集合。下面的字符组合可以描述一个字符集。
X:(X不能是特殊字符 ^$()%.[]* -?中的一个)代表X字母;
.:(一个点)代表所有的字符;
%a:代表所有的字母;
%c:代表所有的控制字符;(自己百度控制字符)
%d:代表所有数字;
%g:代表除了空格字符的所有可以打印的字符;
%l:代表所有的小写字符;
%p:代表所有的标点符号;
%s:代表所有的空白字符;
%u:代表所有的大写字母;
%w:代表所有字母表中的字符;
%x:代表所有的十六进制数字;
%x:(x不是字母数字表中的字符)代表x字符本身。通常用于转义显示特殊字符。任何非字母数字表中的特殊字符都可以用一个百分号后面跟这个字符来进行模式匹配。
[Set]:表示用Set中的所有字符代表的一个字符集合。字符区间可以用“-”,以升序的方式,分隔它的最后的几个字母来表示。上面讲述的用%x字符组合匹配代表的字符集合还可以用于其它字符集的元素。
比如,[%w_](或者)[_%w]代表所有的字母数字表中的字符和下划线组成的集合,[0-7]代表八进制,[0-7%l%-]代表八进制数字、小写字母以及‘-’字符组成的集合。
你可以在一个字符集中的开头位置放置一个].你也可以在一个字符集的开头或者结束放置一个连字符。(你也可以在两种情况中加入转义字符)
字符区间和字符集合有交叉的情况下,你写的模式匹配是错误的。因此,模式[%a-z]或者[a-%%]都是无效的模式。
[^Set]:代表上述模式所代表集合的补集。
用单个字母代表的集合(%a,%c,等),字母对应的大写字母代表集合的补集。例如,%S表示所有非空白字符。
字母,空格,和其他字符组合根据地域不同定义不同。举个实例,集合[a-z]也可能与%l代表的集合不一样。