python学习笔记(十)——正则表达式和re模块

两盒软妹~` 提交于 2019-12-03 13:59:51
#正则表达式和re模块

# match(pattern, string,[flag])     #在字符串开始时进行匹配
# pattern 正则表达式
# string 要匹配的字符串
# [flag] 可选标志位,用于控制匹配方式,不区分大小写等

# 匹配字符串是否以mr_开头,不区分大小写
import re
pattern = r'mr_\w+'
string = 'MR_Shop mr_shop'
match = re.match(pattern,string,re.I)       #re.I表示不区分大小写
print(match)                                #匹配成功返回match对象
print('匹配起始位置:',match.start())
print('匹配结束位置:',match.end())
print('匹配位置元组:',match.span())
print('要匹配的字符串:',match.string)
print('匹配到的数据:',match.group())
string = '项目名称MR_SHOP mr_shop'
match = re.match(pattern,string,re.I)
print(match)                                 #匹配失败返回None

# 验证输入号码是否是中国移动的号码
import re
pattern = r'(13[4-9]\d{8})|(147)|(15[012789]\d{8})|18[278]\d{8}'
mobile_1 = '15312584698'
match = re.match(pattern,mobile_1)
if match == None:
    print(mobile_1,'不是中国移动号码')
else:
    print(mobile_1,'是中国移动号码')
mobile_2 = '15123654785'
match = re.match(pattern,mobile_2)
if match== None:
    print(mobile_2, '不是中国移动号码')
else:
    print(mobile_2, '是中国移动号码')

# re.search(pattern,string,[flag])  搜索第一个匹配的值

import re
pattern = r'mr_\w+'
string = 'MR_SHOP mr_SHOP'
match =re.search(pattern,string,re.I)
print(match)                              #匹配成功返回match对象,输出匹配结果
string = '项目名称MR_SHOP mr_shop'
match = re.search(pattern,string,re.I)
print(match)

# re.finall(pattern,string,[flag])  匹配所有符合正则表达式的字符串
import re
pattern = r'mr_\w+'
string = 'MR_SHOP mr_SHOP'
match =re.findall(pattern,string,re.I)
print(match)                             #匹配成功以列表形式返回
string = '项目名称MR_SHOP mr_shop'
match = re.findall(pattern,string,re.I)
print(match)

#模式字符串包含分组则返回匹配文本
import re
pattern = r'([1-9]{3}(\.[0-9]{1,3}){3})'
string_1 = '127.25.36.3 152.36.22.3'
match = re.findall(pattern,string_1)        #想要获取整个模式字符串的匹配,需要将模式字符串用小括号括起来
for item in match:
    print(item[0])

# 字符串替换
# re.sub(pattern,repl,string,count,flags)
# pattern 正则表达式
# repl 要替换的字符串
# string 被查找替换的原始字符串
# count 可选参数,模式匹配后替换的最大次数,默认为0,表示替换所有
# flag 可选参数,控制匹配方式

# 替换危险字符
import re
pattern = r'(黑客)|(监听)|(抓包)|(Trojan)'
string = '我是一名程序员,喜欢看黑客方面的书,想研究一下Trojan'
sub = re.sub(pattern,'**',string)
print(sub)
string = '我是一名程序员,喜欢看计算机网络方面的书,喜欢开发网站'
sub = re.sub(pattern,'**',string)
print(sub)

# 使用正则表达式分割字符串
# re.split(pattern,string,[maxsplit],[flags])
# pattern 正则表达式
# string 匹配字符串
# maxsplit 设置最大拆分次数
# flags 标志位,控制匹配参数

# 输出被@的好友名称
import re
str1 = '@扎克伯格 @马云 @俞敏洪'
pattern = r'\s*@'
list1 = re.split(pattern,str1)
print("您@的好友:")
for item in list1:
    if item != "":               #输出不为空的元素
        print(item)
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!