使用 re 模块有两种方式:
使用 re.compile 函数生成一个 Pattern 对象,然后使用 Pattern 对象的一系列方法对文本进行匹配查找;
直接使用 re.match, re.search 和 re.findall 等函数直接对文本匹配查找;
下面,我们用一个例子展示这两种方法。
先看第 1 种用法:
import re # 将正则表达式先编译成 Pattern 对象 pattern = re.compile(r'\d+') print pattern.match('123, 123') print pattern.search('234, 234') print pattern.findall('345, 345')
1
2
3
4
5
6
|
import
re
# 将正则表达式先编译成 Pattern 对象
pattern
=
re
.
compile
(
r
'\d+'
)
print
pattern
.
match
(
'123, 123'
)
print
pattern
.
search
(
'234, 234'
)
print
pattern
.
findall
(
'345, 345'
)
|
再看第 2 种用法:
import re print re.match(r'\d+', '123, 123') print re.search(r'\d+', '234, 234') print re.findall(r'\d+', '345, 345')
1
2
3
4
|
import
re
print
re
.
match
(
r
'\d+'
,
'123, 123'
)
print
re
.
search
(
r
'\d+'
,
'234, 234'
)
print
re
.
findall
(
r
'\d+'
,
'345, 345'
)
|
如果一个正则表达式需要用到多次(比如上面的 \d+),在多种场合经常需要被用到,出于效率的考虑,我们应该预先编译该正则表达式,生成一个 Pattern 对象,再使用该对象的一系列方法对需要匹配的文件进行匹配;而如果直接使用 re.match, re.search 等函数,每次传入一个正则表达式,它都会被编译一次,效率就会大打折扣。
因此,我们推荐使用第 1 种用法。