#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')]

>>>