#1 字符匹配
import re
r=r'ab'
print re.findall(r,'abcdefgabcd')
#2 如果有元字符,注意使用转义符'\'
r=r'1\*2'
print re.findall(r,'01*234501*2345')
#元字符介绍
#3 ^ 匹配行首
r=r'^123'
print re.findall(r,'1234512345')
#4 $ 匹配行尾
r=r'345$'
print re.findall(r,'1234512345')
#5 . 匹配单字符
r=r'3.5'
print re.findall(r,'1234512345')
#6 [] 匹配指定的一个字符集
r=r'a[a-zA-Z0-9]c'
print re.findall(r,'abc,aCc,a5c,a3c,cfg')
#7 [^ ] 补集匹配不在区间范围内的字符,注意^放在前面
r=r'a[^0-9]c'
print re.findall(r,'abc,aCc,a5c,a3c,cfg')
#特殊意义字符
#8 \d 代表数字[0-9]
r=r'a\dc'
print re.findall(r,'abc,aCc,a5c,a3c,cfg')
#9 \D 非数字
r=r'a\Dc'
print re.findall(r,'abc,aCc,a5c,a3c,cfg')
#10 \s 空白字符
r=r'a\sc'
print re.findall(r,'abc,aCc,a5c,a3c,cfg,a c,a c')
#11 \S 非空白字符
r=r'a\Sc'
print re.findall(r,'abc,aCc,a5c,a3c,cfg,a c,a c')
#12 \w 单词字符[a-zA-Z0-9_]
r=r'a\wc'
print re.findall(r,'abc,aCc,a5c,a3c,cfg,a c,a c,a_c')
#13 \W 非单词字符
r=r'a\Wc'
print re.findall(r,'abc,aCc,a5c,a3c,cfg,a c,a c,a_c')
#14 {} 前一个字符的重复的次数
r=r'a{2}c'
print re.findall(r,'1aac,2aacc,3aaaaac')
#15 前一个字符在一个范围内的重复次数
r=r'a{1,4}c'
print re.findall(r,'ac,aacc,aaaaac')
#16 * 将前一字符匹配大于等于0次,{0,}效果等价于*
r=r'1[a]*c'
print re.findall(r,'1c2,1aacc2,1aaaaac2')
#17 + 将前一字符匹配大于等于1次,{1,}效果等价于+
r=r'1[a]+c'
print re.findall(r,'1c2,1aacc2,1aaaaac2')
#18 ? 将前一字符匹配0次或1次,表示是否出现,{0,1}效果等价于?
r=r'1[ab]?c'
print re.findall(r,'1c,1ac2,1bc2,1abc2')
#19 *? 尽可能少的匹配
r=r'1.*?c'
print re.findall(r,'1abc1,1abc1,c')
#20 () 分组,注意把'\.com\.cn'放在前面,整体加上括号作为一个大的分组处理方便看出来匹配到的是哪个
r=r'(\w+@\w+(\.com\.cn|\.com|\.cn))'
print re.findall(r,'zhzhgo@51cto.com.cn')
运行结果如下:
>>>
1 ['ab', 'ab']
2 ['1*2', '1*2']
3 ['123']
4 ['345']
5 ['345', '345']
6 ['abc', 'aCc', 'a5c', 'a3c']
7 ['abc', 'aCc']
8 ['a5c', 'a3c']
9 ['abc', 'aCc']
10 ['a c']
11 ['abc', 'aCc', 'a5c', 'a3c']
12 ['abc', 'aCc', 'a5c', 'a3c', 'a_c']
13 ['a c']
14 ['aac', 'aac', 'aac']
15 ['ac', 'aac', 'aaaac']
16 ['1c', '1aac', '1aaaaac']
17 ['1aac', '1aaaaac']
18 ['1c', '1ac', '1bc']
19 ['1abc', '1,1abc', '1,c']
20 [('zhzhgo@51cto.com.cn', '.com.cn')]
>>>