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处理大数字的方法
May 27 Python
python去除文件中空格、Tab及回车的方法
Apr 12 Python
详解python多线程、锁、event事件机制的简单使用
Apr 27 Python
利用Python将数值型特征进行离散化操作的方法
Nov 06 Python
python基于C/S模式实现聊天室功能
Jan 09 Python
Python使用itchat 功能分析微信好友性别和位置
Aug 05 Python
python实现邮件自动发送
Aug 10 Python
Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】
Oct 30 Python
基于torch.where和布尔索引的速度比较
Jan 02 Python
python 如何调用 dubbo 接口
Sep 24 Python
Python实现区域填充的示例代码
Feb 03 Python
在Python中如何使用yield
Jun 07 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
IP攻击升级,程序改进以对付新的攻击
2010/11/23 PHP
PHP数组对比函数,存在交集则返回真,否则返回假
2011/02/03 PHP
Zend Framework 2.0事件管理器(The EventManager)入门教程
2014/08/11 PHP
跟我学Laravel之路由
2014/10/15 PHP
用PHP写的一个冒泡排序法的函数简单实例
2016/05/26 PHP
jQuery性能优化28条建议你值得借鉴
2013/02/16 Javascript
Microsfot .NET Framework4.0框架 安装失败的解决方法
2013/08/14 Javascript
raphael.js绘制中国地图 地图绘制方法
2014/02/12 Javascript
jQuery Masonry瀑布流插件使用详解
2014/11/17 Javascript
ajax跨域调用webservice的实现代码
2016/05/09 Javascript
jQuery分页插件jquery.pagination.js使用方法解析
2017/02/09 Javascript
JS传参及动态修改页面布局
2017/04/13 Javascript
angular4中关于表单的校验示例
2017/10/16 Javascript
Vue 中使用vue2-highcharts实现top功能的示例
2018/03/05 Javascript
js实现左右两侧浮动广告
2018/07/09 Javascript
vue根据进入的路由进行原路返回的方法
2018/09/26 Javascript
微信小程序实现页面左右滑动
2020/11/16 Javascript
50行代码实现贪吃蛇(具体思路及代码)
2013/04/27 Python
跟老齐学Python之正规地说一句话
2014/09/28 Python
python添加模块搜索路径方法
2017/09/11 Python
Python实现Singleton模式的方式详解
2019/08/08 Python
浅谈PyQt5中异步刷新UI和Python多线程总结
2019/12/13 Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
2020/02/25 Python
python3 配置logging日志类的操作
2020/04/08 Python
纯CSS3实现鼠标悬停提示气泡效果
2014/02/28 HTML / CSS
CSS3常用的几种颜色渐变模式总结
2016/11/18 HTML / CSS
浅谈html5标签css3的常用样式
2016/10/20 HTML / CSS
美国最好的葡萄酒网上商店:Wine Library
2019/11/02 全球购物
国际商务英语专业求职信
2014/07/08 职场文书
战略性融资合作协议书范本
2014/10/17 职场文书
2015年司机工作总结
2015/04/23 职场文书
演讲稿:​快乐,从不抱怨开始!
2019/04/02 职场文书
Nginx实现高可用集群构建(Keepalived+Haproxy+Nginx)
2021/05/27 Servers
SpringBoot实现quartz定时任务可视化管理功能
2021/08/30 Java/Android
分享提高 Python 代码的可读性的技巧
2022/03/03 Python
vue3不同环境下实现配置代理
2022/05/25 Vue.js