re是Python内置的模块,通过它提供了对正则表达式的支持

基础应用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 引入re
import re

# 匹配字符串中所有符合正则的内容
re.findall('\d''中国移动:10086;中国联通10010')
# 返回列表['10086', '10010']

# 匹配字符串中所有符合正则的内容。
ls = re.finditer('\d+','中国移动10086;中国联通:10010')
# 返回迭代器。从迭代器中获取内容要用group()
for i in ls:
print(i.group())

# 匹配字符串中第一个符合条件的内容。
ls = re.search('\d+', '中国移动10086;中国联通:10010')
# 返回match对象,用group()取出内容
print(ls.group())

# 从字符串中第一个字符匹配
ls = re.match('\d+', '10086;中国联通:10010')
# 返回match对象,用group()取出内容
# 相当于
ls = re.search('^\d+', '10086;中国联通:10010')

# 预加载.将正则表达式编译成正则表达式对象
obj = re.compile('\d')
# 取出预加载的内容就调用上面介绍的finditer,search等函数
obj.finditer('中国移动10086;中国联通:10010')

例子

我们要在这段HTML代码中取出来周杰伦和Jay

1
2
3
4
5
6
7
8
9
10
s = """
<div class='star'>
<div class='one'><span id='cn'>周杰伦</span></div>
<div class='two'><span id='en'>Jay</span></div>
</div>
"""
obj = re.compile("<span id='.*?'>.*?</span>", re.S)
result = obj.finditer(s)
for i in result:
i.group()

re.compile 的第二个参数是给正则加入特殊规则。

. 在正则中本来的意思是匹配除换行符之外的任意字符。

re.S 表示.也可以匹配换行符。这样是为了防止代码换行导致匹配失败。