【Python】实验二 正则表达式
作者:康慎吾
工作地点:北华航天工业学院
一、实验目的
1、掌握元字符的使用方法。
2、理解正则表达式re模块。
二、实验环境
计算机及Python3.X和Pycharm软件。
三、实验内容与要求
1、匹配网址
有一批网址:
http://www.interoem.com/messageinfo.asp?id=35http://3995503.com/class/class09/news_show.asp?id=14http://lib.wzmc.edu.cn/news/onews.asp?id=769http://www.zy-ls.com/alfx.asp?newsid=377&id=6http://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
print(\'第一题:\')
pattern1 = r\'http://.*?/\'
example1 = \'\'\'
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
\'\'\'
result1 = re.findall(pattern1,example1)
for i in result1:
print(i)
运行结果:
2、匹配合法的ip地址
格式为:pattern=’正则表达式’
example=input(‘请输入一个IP地址’)
print(re.findall(pattern,example))
源代码:
import re
print(\'第二题:\')
pattern2 = r"(25[0-5]\.|2[0-4]\d\.|1?\d?\d\.){3}(25[0-5]$|2[0-4]\d$|1?\d?\d$)"
while True:
example2 = input("请输入一个IP地址:")
result2 = re.match(pattern2, example2)
if result2 == None:
print(\'警告!ip地址不合法,请输入合法的IP地址!\')
continue
else:
print()
print(result2.group())
break
运行结果:
3、匹配所有合法的电子邮件地址(格式如上)
<用户名>@<电子邮件服务器名>
用户名:只允许数字、字母、下划线( _ ),且开头只能是数字或字母。
电子邮件服务器名:只允许数字、字母、小数点( . ),且开头只能是数字或字母。
后缀:.ac|.com|.goc|.edu|.net|.org任意结尾
源代码:
import re
print(\'第三题\')
pattern3 = r"[0-9 a-z A-Z]\w*@[0-9 a-z A-Z][0-9 A-Z a-z \.]*\.(ac|com|goc|edu|net|org)$"
while True:
example3 = input(\'请输入用户名:\')
result3 = re.match(pattern3,example3)
if result3 == None:
print(\'请输入正确邮箱!\')
continue
else:
print(result3.group())
break
运行结果:
4、打开test.txt文本,将里边得文本使用正则表达式筛选出数字,再存入test1.txt文件中。
存入test1.txt文本内容格式为: 29384845
223444444422
323455111
源代码:
import re print(\'第四题\') file=open(\'实验二 test.txt\',\'r+\',encoding=\'utf-8\') file.writelines("\n") line1=re.findall(r\'\d\',file.readline()) line2=re.findall(r\'\d\',file.readline()) line3=re.findall(r\'\d\',file.readline()) for i in line1: file.write(i) file.writelines("\n") for i in line2: file.write(i) file.writelines("\n") for i in line3: file.write(i) file.close()
file=open(\'实验二 test.txt\',\'r+\',encoding=\'utf-8\')
print(file.read())
file.close()
运行结果:
四、实验过程
详见三。
五、实验总结
- 基本掌握了元字符的使用方法,还需要时常复习。
- 理解了正则表达式re模块,并做了相应的练习。
- 通过做实验敲代码查漏补缺了上课没有跟上的知识点,并对正则表达式的应用有了跟深层的理解。
- 感觉各种符号和re模块在脑海中不够系统,反应不够快,需要多加练习