Python正则简单练习

# 关卡一


练习题:


1. 匹配网址
有一批网址:
```
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
```
需要   正则后为:
```
http://www.interoem.com/ 
http://3995503.com/ 
http://lib.wzmc.edu.cn/ 
http://www.zy-ls.com/ 
http://www.fincm.com/
```
```
import re
mystr = '''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'''
mystr = mystr.splitlines()
print(mystr)
for i in mystr:
    print(re.match(r'http://.*(com/|cn/)',i,re.S).group())
```
2. 查找所有的单词
```
hello world ha ha
```
```
import re
mystr = 'hello world ha ha'
print(re.findall(r'\w+',mystr))
```
3. 匹配用一个空格分隔的任意一对单词,比如,名和姓
```
import re
mystr = 'huang feihong fang shiyu'
print(re.findall(r'(\w+ \w+)',mystr))
```
4. 匹配所有合法的Python标识符
```
import re
mystr = '_abc123'
print(re.match(r"[a-zA-Z_]\w*",mystr).group())
```
5. 匹配合法的ip地址
```
import re 
mystr = '10.16.20.3'
print(re.match(r"^(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[0-9]{1,2})(\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[0-9]{1,2})){3}$",mystr).group())
```
6. 匹配所有合法的电子邮件地址(先写出一个限制比较宽松的正则表达式,然后尽可能加 强限制条件,但要保证功能的正确性)。 
```
import re 
mystr = 'lucky188@163.com'
print(re.match(r"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$",mystr).group())
```
7. 将一篇中文文章中的电子邮件地址替换为你自己的电子邮件地址
```
import re
mystr = '世界你好,lucky168@126.com,你好世界,lucky188@163.com'
print(re.sub(r"\w+@\w+\.\w+",'453052784@qq.com',mystr))
```
8. 取出属性data-original对应的url
```
 <img data-original="https://rpic.douyucdn.cn/z1609/07/15/478748_160907150833.jpg" src="https://rpic.douyucdn.cn/z1609/07/15/478748_160907150833.jpg" style="display: block;">
```
```
import re
mystr = '<img data-original="https://rpic.douyucdn.cn/z1609/07/15/478748_160907150833.jpg" src="https://rpic.douyucdn.cn/z1609/07/15/478748_160907150833.jpg" style="display: block;">'
print(re.findall(r'<img data-original="(.*?)" ',mystr,re.S)[0])
```
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值