import re
s1 = 'num:12345678900,name:dgw,phone:19876543210,age:25'
s2 = 'num:12345678900,name:dgw,phone:119876543210,age:25'
aa = re.compile(r'(?<=\D)1[3456789]\d{9}', re.S)
bb = aa.findall(s1)
print(bb)
cc = re.compile(r'(?<=\D)1[3456789]\d{9}', re.S)
dd = cc.findall(s2)
print(dd)
ee = re.compile(r'1[3456789]\d{9}', re.S)
ff = ee.findall(s2)
print(ff)
gg = re.compile(r'(?<=\d)1[3456789]\d{9}', re.S)
hh = gg.findall(s2)
print(hh)
运行结果:
2
.
1
.
1
re
.
compile
()
语法格式
2
.
1
.
2
re
.
compile
()
用法
2
.
2
re
.
match
()
和
re
.
search
()
匹配和搜索函数
2
.
2
.
1
re
.
match
()
语法格式
2
.
2
.
2
re
.
match
()
用法
2
.
2
.
3
re
.
search
()
语法格式
2
.
2
.
4
re
.
search
()
用法
2
.
3
re
.
findall
()
和
那么如果一个
正则表达式
要重复使用几千次,出于效率的考虑,我们是不是应该先把这个正则先预编译好,接下来重复使用时就不再需要编译这个步骤了,直接匹配,提高我们的效率
2
compile
()
预编译十分的简单,
re
.
co
.
.
.
re
.
compile
:
编译
正则表达式
模式,返回一个对象。可以把常用的
正则表达式
编译成
正则表达式
对象,方便后续调用及提高效率。
re
.
compile
(pattern, flags=0)
pattern 指定编译时的表达式字符串
flags 编译标志位,用来修改
正则表达式
的匹配方式。支持
re
.
L|
re
.
M 同时匹配
flags 标志位参数:
re
.
I(
re
.
IGNO
RE
CASE) :使
.
.
.
正则表达式
功能十分强大。
“有些人面临一个问题时会想:‘我知道,可以用
正则表达式
来解决这个问题。’于是现在他们就有两个问题了”——Jamie Zawinski
同时
正则表达式
很难掌握。
正则表达式
的各种规则就不在此赘述了,以下介绍在
python
的
re
模块中怎样应用
正则表达式
1
.
使用
re
.
compile
re
模块中包含一个重要函数是
compile
(pattern [, flags])
.
.
.
re
.
compile
()
是
Python
中
正则表达式
库
re
中的一个函数。它的作用是将
正则表达式
的字符串形式编译为一个
正则表达式
对象,这样可以提高正则匹配的效率。使用
re
.
compile
()
后,可以使用该对象的方法进行匹配和替换操作。
语法:
re
.
compile
(pattern[, flags])
参数说明:
pattern:要编译的
正则表达式
字符串
flags:
正则表达式
的标志位,可
.
.
.
compile
函数用于编译
正则表达式
,返回一个
正则表达式
对象,供 match
()
、search
()
、findall
()
等函数使用。
格式:
re
.
compile
(
正则表达式
【, 标志位】)
import
re
a ='a1b2c3d4e5f6'
pattern =
re
.
compile
('\d') # 匹配数字
s = pattern
.
match(a) # 查找头部,没有匹配
p
.
.
.
# 将字符串中匹配
正则表达式
的部分替换为指定的字符串
re
sult = pattern
.
sub('X', '123abc456def789')
print(
re
sult)
# 输出:'XabcXdefX'
# 根据
正则表达式
匹配的位置分割字符串
re
sult = pattern
.
split('123abc456def789')
print(
re
sult)
# 输出:['', 'abc', 'def', '']
在上面的示例中,首先使用
re
.
compile
()
方法将
正则表达式
编译成一个正则对象。然后,使用正则对象的方法进行字符串匹配、替换、分割等操作,得到了对应的结果。
IT之一小佬: