print(string.find("12ab","%a%a"))
print(string.find("12ab","(%a%a)"))
print(string.find("12ab","[1-3]([1-3])(%a%a)"))
结果:
3 4 -- 简单的模式匹配
3 4 ab -- 用[]创建字符集,"-"为连字符,"^"表示字符集的补集
1 4 2 ab -- 用"()"进行捕获,加了()能将捕获返回出来
[Finished in 0.1s]
基本模式串
【基本模式串】
字符类 描述 示例 结果
. 任意字符 string.find("",".") nil
%s 空白符 string.find("ab cd","%s%s") 3 4
%S 非空白符 string.find("ab cd","%S%S") 1 2
%p 标点字符 string.find("ab,.cd","%p%p") 3 4
%P 非标点字符 string.find("ab,.cd","%P%P") 1 2
%c 控制字符 string.find("abcd\t\n","%c%c") 5 6
%C 非控制字符 string.find("\t\nabcd","%C%C") 3 4
%d 数字 string.find("abcd12","%d%d") 5 6
%D 非数字 string.find("12abcd","%D%D") 3 4
%x 十六进制数字 string.find("efgh","%x%x") 1 2
%X 非十六进制数字 string.find("efgh","%X%X") 3 4
%a 字母 string.find("AB12","%a%a") 1 2
%A 非字母 string.find("AB12","%A%A") 3 4
%l 小写字母 string.find("ABab","%l%l") 3 4
%L 大写字母 string.find("ABab","%L%L") 1 2
%u 大写字母 string.find("ABab","%u%u") 1 2
%U 非大写字母 string.find("ABab","%U%U") 3 4
%w 字母和数字 string.find("a1()","%w%w") 1 2
%W 非字母非数字 string.find("a1()","%W%W") 3 4
模式修饰符
修饰符 描述 示例 结果
+ 表示1个或多个,匹配最多个
string.find("aaabbb","(a+b)") 1 4 aaab
string.find("cccbbb","(a+b)") nil
- 表示0个或多个,匹配最少个
string.find("zzxyyy","(xy-)") 3 3 x
string.find("zzzyyy","(x-y)") 4 4 y
* 表示0个或多个,匹配最多个
string.find("mmmnnn","(m*n)") 1 4 mmmb
string.find("lllnnn","(m*n)") 4 4 n
? 表示0个或1个
string.find("aaabbb","(a?b)") 3 4 ab
string.find("cccbbb","(a?b)") 4 4 b