# 关卡一
练习题:
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. 匹配网址
有一批网址:
```
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])
```