re模块常用函数练习

'''
re.match(pattern,nr)          #从头开始匹配,1次    abcde   abc
re.fullmatch()				  #从头匹配到尾,匹配成功才会返回正则表达式对象。
re.search(pattern,nr)         # 扫描整个字符串并返回第一个成功的匹配   匹配1次      abcde   abc    bcde
re.findall(pattern,nr)        #匹配多次   返回一个列表
re.finditer()                 #匹配多个,返回一个可迭代的序列
re.split()					  #分割
re.sub()                      #replace
'''
import random

'''
修饰符	描述
re.I	使匹配对大小写不敏感
re.M	多行匹配,影响 ^ 和 $
re.S	使 . 匹配包括换行在内的所有字符
re.U	根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
'''
import re

'''1、匹配一个0-9之间任意数字'''
s1 = """1\n12\n995\n9999\n102\n02\n003\n4d"""
print(s1)
match = re.findall("\d{1,}", s1)
if match:
    print(match)
'''2、选出含有ftp的链接,且文件类型是gz或者xz的文件名'''
s3 = """
ftp://ftp.astrom.com/pub/file/file-5.14.tar.gz
ftp://ftp.gmplib.org/pub/gmp-5.1.0/gmp-5.1.00tar.xz
ftp://ftp.vim,org/pub/vim/unix/vim-7.3.tar.ba2
http://anduin.linuxfromscratch.org/sources/LFS/lfs-packages/conglomeration//iana-etc/iana-etc-2.30.tar.bz2
http://anduin.linuxfromscratch.org/sources/other/udev-lfs-205-1.tar.bz2
http://download.savannah.gnu.org/releases/libpipeline/libpipeline-1.2.4.tar.gz
http://download.savannah.gnu.org/releases/man-db/man-db-2.6.5.tar,xz
http://download.savannah.gnu.org/releases/sysvinit/sysvinit-2.88dsf.tar.bz2
http://ftp.altlinux.org/pub/people/legion/kbd-1.15.5.tar.gz
http://mirror.hust.edu.cn/gnu/antoconf/autoconf-2.69.tar.gz
http://mirror.hust.edu.cn/gnu/antomake/automake-2.69.tar.gz
"""
match = re.finditer("ftp://ftp.*(gz|xz)", s3)
if match:
    for i in match:
        print(i.group())
'''3、匹配邮箱'''

s4 = """
test@hot-mail.com
v-ip@magedu.com
web.manager@magedu.com.cn
super.user@google.com
a@w-a-com
"""
match = re.finditer(".*@.*\.com", s4)
if match:
    for i in match:
        print(i.group())

'''4、变量命名规则'''
name = "www"

if re.fullmatch("[A-Za-z_][A-Za-z_0-9]*", name): print("符合命名规则")

'''5、匹配手机号
13088348613
13597194314
15765688292
15497111359
11721846970
13339869726
16847799023
12335184577
16069869264
15204395987'''
for i in range(30):
 print("1"+str(random.randint(1000000000,9999999999)))
phone=input("请输入你的手机号").strip()

match = re.findall("1[3-9]\d{9}",phone)
if match :
    print("手机号验证通过")

'''6、匹配日期'''
s1="今天是2023-01-05,下雨"
match = re.findall("\d{4}-\d{2}-\d{2}",s1)
if match :
    print(match)
'''7、匹配出书名'''
s1 = '''
(1)《Python程序设计(第2版)》(ISBN:978-7-302-43651-5),清华大学出版社,2016年8月

(2)《Python可以这样学》(ISBN:978-7-302-45646-9),清华大学出版社,2017年2月

(3)《Python程序设计基础(第2版)》(ISBN:978-7-302-49056-2)清华大学出版社,2018年1月

(4)《中学生可以这样学Python》(ISBN:978-7-302-48039-6)清华大学出版社,配套微课:《中学生可以这样学Python》84节微课免费观看地址

(5)《Python程序设计开发宝典》(ISBN:978-7-302-47210-0)清华大学出版社,2018年10月
'''
match = re.findall("(《.*》)(ISBN:(.*)),?(.*出版社)",s1)#在什么情况下要分组啊?答 :好操作做
if match :
    for book,isbn,cbs in match :
        print(book,isbn,cbs)

'''8、匹配身份证号'''
ss = '''
    130102200903226670 有效性:有效
    130102200903227358 有效性:有效
    130102200903228019 有效性:有效
    13010220090322347X 有效性:有效
    130102200903220033 有效性:有效
    130102200903225133 有效性:有效
    130102200903229214 有效性:有效
    130102200903222434 有效性:有效
    130102200903224472 有效性:有效
    130102200903226179 有效性:有效
'''
match = re.findall("\d{17}[0-9X]",ss)
if match :print("身份证号有效")
sss = "9、【vivo】548037是您登录帐号的验证码,为了您的帐号安全,短信请勿泄露给他人,如非本人操作请忽略。"
match = re.findall("\d{6}",sss)
if match : print(match)

ssss = '''
【中国联通】恭喜您成功参与“流量0元体验”活动,https://blog.csdn.net/ 
本月另得的2GB流量已发放到您的王卡号码,流量当月有效,
领取后即可使用,领取链接: https://u.10010.cn/qyzx2i ,
也可通过登录中国联通APP-我的-“领会员”页面领取https://www.baidu.com/ 。
'''
match = re.findall("(https?://.*) ",ssss)#==>list
if match :
    print(match)

'''10'''
match = re.findall("[^\u4e00-\u9fa5\da-zA-Z]",ssss)#[]二选一只有单个字符()二选一只可以有多个字符
if match :
    print(len(match))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

光明有我16620122910

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值