正则表达式在很多编程语言里面都有出现,在javascript、sql、python……他们中的正则表达式基本大同小异,他的功能说直白一点就是对字符串进行筛选过滤。在python中正则表达式是封装在re模块中的。
re.match函数
语法 : re.match(正则表达式, 进行匹配的字符串, 标志位(可选))
# 实例
import re
li = [
'13688989897@qq.com',' 13688989897','dfg13688989897'
]
for i in li:
split = re.match('136',i)
if split:
print('{0} 截取位置:{1}'.format(i,split.span()))
运行结果:
re.search函数
语法 : re.search(正则表达式, 进行匹配的字符串, 标志位(可选))
# 实例
import re
li = [
'13688989897@qq.com',' 13688989897','dfg13688989897'
]
for i in li:
split = re.search('136',i)
if split:
print('{0} 截取位置:{1}'.format(i,split.span()))
运行结果:
# 实例
import re
strint = 'My major is computer'
s_obj = re.search( r'(.*) major (.*?) .*', strint, re.M|re.I)
print('group:',s_obj.group())
print('group1:',s_obj.group(1))
print('group2:',s_obj.group(2))
运行结果:
检索和替换
语法: re.sub(正则表达式, 要替换的字符串, 字符串, 替换最大数量(默认所有), 匹配模式)
# 实例
import re
phone = "136-232-666 # 这是一个电话号码"
# 删除注释
num = re.sub(r'#.*$', "", phone)
print("电话号码 : ", num)
# 移除非数字的内容
num = re.sub(r'\D', "", phone)
print("电话号码 : ", num)
运行结果:
re.findall
语法 : re.findall(正则表达式, 进行匹配的字符串, 标志位(可选))
# 实例
import re
li1 = re.findall(r'\d+', 'number 123 number2 456')
pattern = re.compile(r'\d+') # 查找数字
li2 = pattern.findall('number 123 google 456')
li3 = pattern.findall('abio1c2b66jklj125', 0, 10)
print(li1)
print(li2)
print(li3)
运行结果:
修饰符
正则表达式实例:
常用正则
打卡46天,对python大数据感兴趣的朋友欢迎一起讨论、交流,请多指教!