正则表达式是处理字符串的强大工具。作为一个概念而言,正则表达式对于Python来说并不是独有的。但是,Python中的正则表达式在实际使用过程中还是有一些细小的差别。
(1)匹配1-100之间的数
import re s = '100' # 1-100内的任意数字 ret = re.match(r'(100|[1-9]\d{0,1})$',s) print(ret.group())
(100|[1-9]\d{0,1})$
100可以匹配100 | 或者匹配[1-9]中的一个数,然后后面\d是数字,后面的{0,1}匹配最多一个数字或没有数字
[1-9]\d意思是只能是前面是1-9的任意数字主要是不包括0,否则01是不允许,后面是任意包括0。
(2)匹配座机号码
010-67132692,其构造规则为[3位数字][-][8位数字]
或者
0516-8978981,其构造规则为[4位数字][-][7位数字]
import re s = "010-67132692" ret = re.search(r'^\d{3,4}-\d{7,8}$' , s) print(ret.group())
注意:print(ret.group(0)) 一样的效果,python默认可以0,不用()也可以获取,一般php与js中都是\1开始
(3)对输入的qq号进行匹配(qq匹配规则:长度为5-10位,纯数字组成,且不能以0开头。)
import re s = "1101111123" ret = re.match(r'[1-9]\d{4,9}$' , s) if ret != None: print(ret.group()) else : print('匹配失败!')
(4)查找字符串中有多少个af
import re s = "asdfjvjadsffvaadfkfasaffdsasdffadsafafsafdadsfaafd" ret = re.findall(r'(af)' , s) print(len(ret))
(5)规则是按照空格出现一次或者多次切割
import re s = "zhangsan lisi wangwu" res = re.compile(r'\s+') ret = res.split(s) print(ret)
效果图:
(6)用正则\\切割
import re s = "c:\\abc\\a.txt" res = re.compile(r'\\') ret = res.split(s) print(ret)
效果图:
(7)将连续5个以上数字替换成#
import re s = "wer8934605juo123wa89320571f" res = re.compile(r'\d{5,}') ret = res.sub('#' , s) print(ret)
效果图:
(8)取出字符串中的所有字母
import re s = "abDEe23dJfd343dPOddfe4CdD5ccv!23rr" res = re.compile(r'[a-zA-Z]+') ret = res.findall(s) print(ret)
效果图:
(9)找出以字母e结尾的单词,忽略大小写
import re s = 'THREE people at HERE do some THING' res = re.compile(r'\w+e\b' , re.I) #\b为边界 ret = res.findall(s) print(ret)
效果图:
(10)将多个重复字母替换成&
import re s = "cudddbhuuujdddcaa" res = re.compile(r'([a-zA-Z])\1+') ret = res.sub('&' , s) print(ret)
效果图:
(11)将多个重复字母替换成一个字母(比如ddd替换成d)
import re s = "cudddbhuuujddd" res = re.compile(r'([a-zA-Z])\1+') ret = res.sub(r'\1',s) print(ret)
效果图:
(12)获取长度为3个字母的单词
import re s = "min tian jiu yao fang jia le ,da jia" ret = re.findall(r'\b\w{3}\b' , s) print(ret)
效果图:
(13)将字符串变成 '我要学编程'
import re s = "我我...我我...我要..要要...要要...学学学...学学...编编编..编程..程.程...程...程" res = re.sub(r'\W+','', s) ret = re.sub(r'(.)\1+',r'\1',res) print(ret)
效果图:
(14)去掉div和b标签
结果:正则<span>表达式</span>练习
import re s = "<div class='a'>正则<span>表达式</span><b style='color:red'>练习</b></div>" ret = re.sub(r'(</"//img.jbzj.com/file_images/article/202003/2020030321195419.png" width="374" alt="" />(15)找出每行中只有3个数字的字符串
import re s = '''121fefe 3qsqse2 ded6d32 aaaaa1a 1234adc ''' ret = re.findall(r'^\D*\d\D*\d\D*\d\D*$' , s ,re.M) print(ret)效果图:
以下是补充
收集一些常用的python正则练习
# 匹配出0-99之间的数字 print("---匹配出0-99之间的数字---") ret = re.match(r"^[1-9]","77") print(ret.group()) # 8到20位的密码,可以是"---,8到20位的密码,可以是") ret = re.match("[\w_]{8,20}","1123dasf1") print(ret.group()) # 匹配出163的邮箱地址,且@符号之前有4到 20位,例如hello@163.com print("---匹配出163的邮箱地址,且@符号之前有4到 20位,例如hello@163.com---") ret = re.match("[\w_]{4,20}@163\.com","evan_qb@163.com") print(ret.group()) print("---b---") ret = re.match(r".*\b163\b","evan_qb@163.com") print(ret.group()) # 匹配1-100之间的数 print("---匹配1-100之间的数---") ret = re.match("[1-9]","100") print(ret.group()) # 匹配163、126、qq邮箱 print("---匹配163、126、qq邮箱---") ret = re.match("[\w_]{4,20}@(163|126|qq)\.com","123342@126.com") print(ret.group()) # 匹配<html>hello world</html> print("---匹配<html>hello world</html>---") ret = re.match(r"<([a-zA-Z]*)>.*</\1>","<html>hello world</html>") print(ret.group()) # 第一种:匹配出<html><h1>www.itcast.cn</h1></html> print("---第一种:匹配出<html><h1>www.qblank.cn</h1></html>---") ret = re.match(r"<(\w*)><(\w*)>.*</\2></\1>","<html><h1>www.itcast.cn</h1></html>") print(ret.group()) # 第二种: 匹配出<html><h1>www.qblank.cn</h1></html> print("---第二种: 匹配出<html><h1>www.qblank.cn</h1></html>") ret = re.match("<(","<html><h1>www.qblank.cn</h1></html>") print(ret.group()) # ******re模块的高级用法***** # 使用search匹配文章的阅读的次数 print("---匹配文章的阅读的次数---") ret = re.search(r"\d+","阅读次数为 9999") print(ret.group()) # 统计出python、c、c++相应"---统计出python、c、c++相应") ret = re.findall(r"\d+","python = 2342,c = 7980,java = 9999") print(ret) # 将匹配到的阅读次数加1 print("---将匹配到的阅读次数加1---") ret = re.sub(r"\d+","999","python = 997") print(ret) # <div> # <p>岗位职责:</p> # <p>完成推荐算法、数据统计、接""" <div> <p>岗位职责:</p> <p>完成推荐算法、数据统计、接""" print("---爬取就业信息网址---") # 方法一:关闭贪婪模式 print("---方法一---") ret = re.sub(r"<.+?>","",data) print(ret) # 方法二: print("---方法二---") ret = re.sub(r"</","",data) print(ret) # 切割字符串“info:xiaoZhang 33 shandong” print("---切割字符串“info:xiaoZhang 33 shandong”---") ret = re.split(r":|","切割字符串info:xiaoZhang 33 shandong") print(ret) # This is a number 234-235-22-423 data = "This is a number 234-235-22-423" print("---贪婪和非贪婪---") # 贪婪 ret = re.match(".+(\d+-\d+-\d+-\d+)",data) print(ret.group(1)) # 非贪婪 ret = re.match(".+",data) print(ret.group(1)) # 提取图片的url data = """ <img data-original="https://rpic.douyucdn.cn/appCovers/2016/1 1/13/1213973_201611131917_small.jpg" src="/UploadFiles/2021-04-08/1213973_201611131917_small.jpg">
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]