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使用scrapy采集数据时为每个请求随机分配user-agent的方法
Apr 08 Python
利用python编写一个图片主色转换的脚本
Dec 07 Python
Flask框架Flask-Login用法分析
Jul 23 Python
python实现反转部分单向链表
Sep 27 Python
Django如何实现网站注册用户邮箱验证功能
Aug 14 Python
Python3简单爬虫抓取网页图片代码实例
Aug 26 Python
python 类之间的参数传递方式
Dec 20 Python
python 使用递归回溯完美解决八皇后的问题
Feb 26 Python
python 子类调用父类的构造函数实例
Mar 12 Python
vue常用指令代码实例总结
Mar 16 Python
使用OpenCV实现人脸图像卡通化的示例代码
Jan 15 Python
Python读取文件夹下的所有文件实例代码
Apr 02 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数组函数序列之in_array() - 查找数组中是否存在指定值
2011/11/07 PHP
php防止站外远程提交表单的方法
2014/10/20 PHP
PHP遍历目录文件的常用方法小结
2017/02/03 PHP
PHP命名空间定义与用法实例分析
2019/08/14 PHP
js解决select下拉选不中问题
2014/10/14 Javascript
Vue数据驱动模拟实现1
2017/01/11 Javascript
jQuery实现简单的滑动导航代码(移动端)
2017/05/22 jQuery
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
2017/06/02 jQuery
vue2.0项目中使用Ueditor富文本编辑器示例代码
2017/08/14 Javascript
JavaScript实现汉字转换为拼音及缩写的方法示例
2019/03/28 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
2019/07/22 Javascript
JS实现简单打字测试
2020/06/24 Javascript
Javascript异步流程控制之串行执行详解
2020/09/27 Javascript
你不知道的SpringBoot与Vue部署解决方案
2020/11/09 Javascript
[03:36]2014DOTA2 TI小组赛综述 八强诞生进军钥匙球馆
2014/07/15 DOTA
用python实现简单EXCEL数据统计的实例
2017/01/24 Python
Python书单 不将就
2017/07/11 Python
python3+requests接口自动化session操作方法
2018/10/13 Python
Python UnboundLocalError和NameError错误根源案例解析
2018/10/31 Python
Python输出指定字符串的方法
2020/02/06 Python
利用PyQt5+Matplotlib 绘制静态/动态图的实现代码
2020/07/13 Python
Python 如何创建一个线程池
2020/07/28 Python
Python钉钉报警及Zabbix集成钉钉报警的示例代码
2020/08/17 Python
Python绘制词云图之可视化神器pyecharts的方法
2021/02/23 Python
HTML5标签嵌套规则详解【必看】
2016/04/26 HTML / CSS
亚马逊巴西站:Amazon.com.br
2019/09/22 全球购物
北京泡泡网网络有限公司.net面试题
2012/07/17 面试题
土木工程毕业生自荐信
2013/11/12 职场文书
晚宴邀请函范文
2014/01/15 职场文书
英语生日邀请函
2014/01/23 职场文书
2014年电厂个人工作总结
2014/11/27 职场文书
四年级数学上册教学计划
2015/01/20 职场文书
2015学生会文艺部工作总结
2015/04/03 职场文书
2015年学校精神文明工作总结
2015/05/27 职场文书
Python爬虫数据的分类及json数据使用小结
2021/03/29 Python
Oracle更换为MySQL遇到的问题及解决
2021/05/21 Oracle