【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中的正则表达式(re模块)是一个用于处理字符串的强大工具,它可以用来匹配、查找、替换和分割字符串。以下是一些常用的正则表达式操作: 1. 导入re模块:`import re` 2. 匹配字符串:使用`re.match()`函数,如果字符串开头匹配正则表达式,则返回一个匹配对象;使用`re.search()`函数,如果字符串中有匹配的部分,则返回一个匹配对象;使用`re.findall()`函数,返回所有匹配的列表;使用`re.finditer()`函数,返回一个迭代器,包含所有匹配的元组。 3. 替换字符串:使用`re.sub()`函数,将匹配到的部分替换为指定的字符串。 4. 分割字符串:使用`re.split()`函数,根据匹配到的正则表达式分割字符串。 下面是一些练习题: 1. 编写一个程序,从输入的字符串中提取所有的数字。 解析:使用`re.findall()`函数,匹配所有的数字。 ```python import re def extract_numbers(s): return re.findall(r'\d+', s) input_str = "abc123def456" print(extract_numbers(input_str)) ``` 2. 编写一个程序,将输入的字符串中的所有字母转换为大写。 解析:使用`re.sub()`函数,将所有的小写字母替换为大写字母。 ```python import re def to_uppercase(s): return re.sub(r'[a-z]', lambda x: x.group().upper(), s) input_str = "Hello, World!" print(to_uppercase(input_str)) ``` 3. 编写一个程序,将输入的字符串中的所有单词逆序排列。 解析:首先使用`re.split()`函数分割字符串,然后使用`reversed()`函数逆序排列单词,最后使用`join()`函数将单词连接成字符串。 ```python import re def reverse_words(s): words = re.split(r'\s+', s) reversed_words = [''.join(reversed(word)) for word in words] return ' '.join(reversed_words) input_str = "Hello, World!" print(reverse_words(input_str)) ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值