使用的特殊符号:
* 匹配前面出现的正则表达式0次或多次
+ 匹配前面出现的正则表达式1次或多次
? 匹配前面出现的正则表达式0次或1次
re1|re2 匹配正则表达式re1或re2
^ 匹配字符串的开始
$ 匹配字符串的结尾
. 匹配任何字符(换行符除外)
{N} 匹配前面出现的正则表达式出现N次
使用的字符
d 匹配任何数字,和[0-9]一样(D是d的反义:任何非数字符)
w 匹配任何数字字母字符,和[A-Za-z0-9]相同(W是w的反义)
s 匹配任何空白符,和[ vf]相同,(S是s的反义)
匹配单词边界(B是的反义)
A 匹配字符串的开始
匹配字符串的结束
>>> import re
>>> str = 'abc123def12gh1'
>>> p1 = re.compile('d+')
>>> print p1.findall(str)
['123', '12', '1']
>>>
>>> p2 = re.compile('d')
>>>
>>> print p2.findall(str)
['1', '2', '3', '1', '2', '1']
>>>
>>> str = 'a@163.com;b@gmail.com;c@qq.com e0@163.com;f@qq.com'
>>> p3 = re.compile('w+@163.com')
>>> print p3.findall(str)
['a@163.com', 'e0@163.com']
>>>
>>> p4 = re.compile('w+@[163|qq].com')
>>> print p4.findall(str)
[]
>>> p4 = re.compile('w+@[163|qq]+.com') # w+ @前面一个或多个数字或字母, .com 为转义字符
>>> print p4.findall(str)
['a@163.com', 'c@qq.com', 'e0@163.com', 'f@qq.com']
>>> str = '<html><h>title</h><body>xxx</body></html>'
>>> p5 = re.compile('<h>[^<]+</h>') # [^<]+表示不是尖括号<
>>> print p5.findall(str)
['<h>title</h>']
>>>
>>> p5 = re.compile('<h>([^<]+)</h><body>([^<]+)</body>') #圆括号用来指定找的部分
>>> print p5.findall(str)
[('title', 'xxx')]
>>> str = 'xx2016-06-11yy'
>>> p6 = re.compile('d{4}-d{2}-d{2}') #d{4} 数字出现4次
>>> print p6.findall(str)
['2016-06-11']
>>> p7 = re.compile('dddd-dd-dd')
>>> print p7.findall(str)
['2016-06-11']