Python正则表达式学习小例子


Posted in Python onMarch 03, 2020

正则表达式是处理字符串的强大工具。作为一个概念而言,正则表达式对于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)

效果图:

Python正则表达式学习小例子

(6)用正则\\切割

import re 
 
s = "c:\\abc\\a.txt"
res = re.compile(r'\\')
ret = res.split(s)
print(ret)

效果图:

Python正则表达式学习小例子

(7)将连续5个以上数字替换成#

import re 
 
s = "wer8934605juo123wa89320571f"
res = re.compile(r'\d{5,}')
ret = res.sub('#' , s)
print(ret)

效果图:

Python正则表达式学习小例子

(8)取出字符串中的所有字母

import re 
 
s = "abDEe23dJfd343dPOddfe4CdD5ccv!23rr"
res = re.compile(r'[a-zA-Z]+')
ret = res.findall(s)
print(ret)

效果图:

Python正则表达式学习小例子

(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)

效果图:

Python正则表达式学习小例子

(10)将多个重复字母替换成&

import re 
 
s = "cudddbhuuujdddcaa"
res = re.compile(r'([a-zA-Z])\1+')
ret = res.sub('&' , s)
print(ret)

效果图:

Python正则表达式学习小例子

(11)将多个重复字母替换成一个字母(比如ddd替换成d)

import re 
 
s = "cudddbhuuujddd"
res = re.compile(r'([a-zA-Z])\1+')
ret = res.sub(r'\1',s)
print(ret)

效果图:

Python正则表达式学习小例子

(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)

效果图:

Python正则表达式学习小例子

(13)将字符串变成 '我要学编程'

import re
s = "我我...我我...我要..要要...要要...学学学...学学...编编编..编程..程.程...程...程"
res = re.sub(r'\W+','', s)
ret = re.sub(r'(.)\1+',r'\1',res)   
print(ret)

效果图:

Python正则表达式学习小例子

(14)去掉div和b标签

结果:正则<span>表达式</span>练习

import re 
 
s = "<div class='a'>正则<span>表达式</span><b style='color:red'>练习</b></div>"
ret = re.sub(r'(</?div.*?>|</?b.*?>)','',s) 
print(ret)

效果图:

Python正则表达式学习小例子

(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正则表达式学习小例子

 以下是补充

收集一些常用的python正则练习

# 匹配出0-99之间的数字
print("---匹配出0-99之间的数字---")
ret = re.match(r"^[1-9]?[0-9]$","77")
print(ret.group())
 
# 8到20位的密码,可以是⼤⼩写英⽂字⺟、数字、下划线
print("---,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]?\d$|100","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("<(?P<name1>\w*)><(?P<name2>\w*)>.*</(?P=name2)></(?P=name1)>","<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++相应⽂章阅读的次数
print("---统计出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>完成推荐算法、数据统计、接⼝、后台等服务器端相关⼯作</p>
#  <p><br></p> <p>必备要求:</p> <p>良好的⾃我驱动⼒和职业素养,⼯作积极主动、结果导向</p>
#  <p> <br></p> <p>技术要求:</p>
#  <p>1、⼀年以上	Python	开发经验,掌握⾯向对象分析和设计,了解设计模式</p >
#  <p>2、掌握HTTP协议,熟悉MVC、MVVM等概念以及相关WEB开发框架</p>
#  <p>3、掌握关系数据库开发设计,掌握	SQL,熟练使⽤	MySQL/PostgreSQL	中 的⼀种<br></p>
#  <p>4、掌握NoSQL、MQ,熟练使⽤对应技术解决⽅案</p>
#  <p>5、熟悉	Javascript/CSS/HTML5,JQuery、React、Vue.js</p>
#  <p> <br></p> <p>加分项:</p>
#  <p>⼤数据,数理统计,机器学习,sklearn,⾼性能,⼤并发。</p>
# </div>
data = """
<div>
  <p>岗位职责:</p>
  <p>完成推荐算法、数据统计、接⼝、后台等服务器端相关⼯作</p>
  <p><br></p> <p>必备要求:</p> <p>良好的⾃我驱动⼒和职业素养,⼯作积极主动、结果导向</p>  <p> <br></p> <p>技术要求:</p>
  <p>1、⼀年以上	Python	开发经验,掌握⾯向对象分析和设计,了解设计模式</p >
  <p>2、掌握HTTP协议,熟悉MVC、MVVM等概念以及相关WEB开发框架</p>
  <p>3、掌握关系数据库开发设计,掌握	SQL,熟练使⽤	MySQL/PostgreSQL	中 的⼀种<br></p>
  <p>4、掌握NoSQL、MQ,熟练使⽤对应技术解决⽅案</p>
  <p>5、熟悉	Javascript/CSS/HTML5,JQuery、React、Vue.js</p>
  <p> <br></p> <p>加分项:</p>
  <p>⼤数据,数理统计,机器学习,sklearn,⾼性能,⼤并发。</p>
</div>
"""
print("---爬取就业信息网址---")
# 方法一:关闭贪婪模式
print("---方法一---")
ret = re.sub(r"<.+?>","",data)
print(ret)
# 方法二:
print("---方法二---")
ret = re.sub(r"</?\w+>","",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(".+?(\d+-\d+-\d+-\d+)",data)
print(ret.group(1))
 
 
# 提取图片的url
data = """
  <img data-original="https://rpic.douyucdn.cn/appCovers/2016/1
  1/13/1213973_201611131917_small.jpg"	
  src="https://rpic.douyuc dn.cn/appCovers/2016/11/13/1213973_201611131917_small.jpg"
  style="display:inline;">
"""
print("---提取图片的url")
ret = re.search(r"https.+?\.jpg",data)
print(ret.group())
 
data = """
  http://www.interoem.com/messageinfo.asp?id=35 
  http://3995503.com/class/class09/news_show.asp?id=14 
  http://lib.wzmc.edu.cn/news/onews.asp?id=769 
  http://www.zy-ls.com/alfx.asp?newsid=377&id=6 
  http://www.fincm.com/newslist.asp?id=415
"""
# 去掉后缀
print("---去掉后缀---")
ret = re.sub(r"(http://.+?/).*", lambda x: x.group(1),data)
print(ret)
 
# 找出所有单词
data = "hello	world	ha	ha"
print("---找出所有单词---")
print("--方法一--")
ret = re.split(r" +",data)
print(ret)
print("--方法二--")
ret = re.findall(r"\b[a-zA-Z]+\b",data)
print(ret)

到此这篇关于Python正则表达式学习小例子的文章就介绍到这了,更多相关Python正则学习例子内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python判断字符串与大小写转换
Jun 08 Python
python访问抓取网页常用命令总结
Apr 11 Python
浅谈Pycharm调用同级目录下的py脚本bug
Dec 03 Python
Python 从相对路径下import的方法
Dec 04 Python
python2.7使用plotly绘制本地散点图和折线图
Apr 02 Python
Python实现隐马尔可夫模型的前向后向算法的示例代码
Dec 31 Python
PyCharm 无法 import pandas 程序卡住的解决方式
Mar 09 Python
使用jupyter notebook将文件保存为Markdown,HTML等文件格式
Apr 14 Python
matplotlib 对坐标的控制,加图例注释的操作
Apr 17 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
Jun 08 Python
matplotlib bar()实现多组数据并列柱状图通用简便创建方法
Feb 24 Python
使用opencv-python如何打开USB或者笔记本前置摄像头
Jun 21 Python
python正则表达式实例代码
Mar 03 #Python
python 实现在无序数组中找到中位数方法
Mar 03 #Python
python的列表List求均值和中位数实例
Mar 03 #Python
基于Python数据分析之pandas统计分析
Mar 03 #Python
python 的numpy库中的mean()函数用法介绍
Mar 03 #Python
Python统计学一数据的概括性度量详解
Mar 03 #Python
python多维数组分位数的求取方式
Mar 03 #Python
You might like
php 购物车的例子
2009/05/04 PHP
PHP查看SSL证书信息的方法
2016/09/22 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
editable.js 基于jquery的表格的编辑插件
2011/10/24 Javascript
JavaScript实现的内存数据库LokiJS介绍和入门实例
2014/11/17 Javascript
node.js中实现同步操作的3种实现方法
2014/12/05 Javascript
实例讲解JavaScript中instanceof运算符的用法
2016/06/08 Javascript
js实现可键盘控制的简单抽奖程序
2016/07/13 Javascript
js只执行1次的函数示例
2016/07/20 Javascript
BootStrap iCheck插件全选与获取value值的解决方法
2016/08/24 Javascript
ionic组件ion-tabs选项卡切换效果实例
2016/08/27 Javascript
js实现非常棒的弹出div
2016/10/06 Javascript
过期软件破解办法实例详解
2017/01/04 Javascript
JS+HTML5 FileReader对象用法示例
2017/04/07 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
2017/04/26 Javascript
JavaScript实现反转字符串的方法详解
2017/04/27 Javascript
JavaScript实现二叉树的先序、中序及后序遍历方法详解
2017/10/26 Javascript
node.js +mongdb实现登录功能
2020/06/18 Javascript
python开发之thread实现布朗运动的方法
2015/11/11 Python
利用 Monkey 命令操作屏幕快速滑动
2016/12/07 Python
Python实现的网页截图功能【PyQt4与selenium组件】
2018/07/12 Python
python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
2019/08/24 Python
Python利用for循环打印星号三角形的案例
2020/04/12 Python
css3实现3D色子翻转特效
2014/12/23 HTML / CSS
俄罗斯最大的消费电子连锁零售商:Mvideo
2017/06/25 全球购物
机电一体化专业应届本科生求职信
2013/09/27 职场文书
高中自我鉴定范文
2013/11/03 职场文书
平安建设汇报材料
2014/12/29 职场文书
高校自主招生教师推荐信
2015/03/23 职场文书
关于车尾的标语大全
2015/08/11 职场文书
优秀新员工事迹材料
2019/05/13 职场文书
2019奶茶店创业计划书范本!
2019/07/15 职场文书
goland 恢复已更改文件的操作
2021/04/28 Golang
python numpy中multiply与*及matul 的区别说明
2021/05/26 Python
vue组件vue-esign实现电子签名
2022/04/21 Vue.js