- [ ]
- 常用来指定一个字符集:[abc];[a-z]
- 元字符在字符集中不起作用:[amk$]
- 补集匹配不在区间范围内的字符
- ^
- 匹配行首。除非设置MULTILINE标志,它只是匹配字符串的开始。在MULTILINE模式中,它也可以直接匹配字符串中的每个换行
- $
- 匹配行尾,行尾被定义为要么是字符串结尾,要么是一个换行字符后面的任何位置
- 转译字符,后面可以加不同的字符以表示不同特殊意义,也可以用于取消所有的元字符
- d匹配任何十进制数,相当于类[0-9]
- D匹配任何非数字字符,相当于[^0-9]
- s匹配任何空白字符,相当于类[ fv]
- S匹配任何非空白字符,相当于[^ fv]
- w匹配任何字母数字字符,相当于[a-zA-Z0-9]
- W匹配任何非字母数字字符,相当于[^a-zA-Z0-9]
- 重复
- 正则表达式的第一功能是能匹配不定长 的字符集,另一个功能是可以指定正则表达式的一部分重复次数,a = r'd{n}'--其中{n}表示有几位数,也就是重复的次数
- *
- 指定前一个字符可以被匹配两次或者更多次,而不是只有一次。匹配引擎会试着重复尽可能多的次数(不超过整数界定范围:20亿)
- a[bcd]*b--'abcbd' #a,b中间有0-n个b、c、d都可以被匹配
- +
- 表示匹配一次或多次,*匹配可以不出现,但是+匹配至少出现一次
- ?
- 匹配1次或0次,可认为它是标识某事物是可选的
- 贪婪模式:s = r'ab*'------和'abbbbbbb'匹配返回'abbbbbbb';非贪婪模式:s = r'ab*?'--------和'abbbbbbb'匹配返回'ab',也叫最小匹配模式
- {m,n}
- 其中m和n是十进制整数,该限定符的意思是至少会有m个重复,至多到n个重复
- 忽略 m会认为下边界为0,忽略n会认为上边界无穷大(20亿)