- 0X38 字符类
目前为止我们介绍的正则表达式可以匹配某个位置上的任意字符.但是无法匹配变长度的字符串.
在模式字符串中任意的字符或者字符类后加'*'
表示匹配这个字符类零次或者任意次.例如:
p='a[bc]*d' string.find('abbbbbd',p) string.find('ad',p) string.find('acbcbd',p)
类似的,'+'
表示匹配一到任意次.
星号和加号都会匹配尽量长的字符串.而同样是匹配零到任意次的'-'
则是尽量匹配短的.符号'?'
则表示匹配零次或者一次.如果可能的情况下它会尽量匹配一次.
str='baaaaa' string.find(str,'ba*') string.find(str,'ba-') string.find(str,'ba?')
表达式'%b'
后加两个字符.表示匹配一个字符串以'%b'
后第一个字符开始,以第二个字符结束的字符串.例如匹配圆括号括起来的部分:
str='abc(ano)ee' string.find(str,'%b()')
注意在'%b'
后边两位出现正则表达式中有语法意义的特殊符号不需要转义,也不能使用字符类.
注意这个也会尽量匹配
表达式'%f'
后加一个自定义字符类.它返回的第一个值是一个属于这个类的字符的位置.而返回的第二个值只和第一个值差1,在这个位置上的字符是不属于指定的字符类的.例如:
string.find('aoeui12345','%f[%A]')
- 0X3A 捕获和其他