python学习笔记 day19 正则表达式(三)

匹配标签:

import re
ret=re.search('<(?P<tag_name>\w+)>\w+,\w+</(?P=tag_name)>','<h1>hello,xuanxuan</h1>')
print(ret.group())

运行结果:

其实我现在就是目标是后面待匹配的字符串,练习一下前面怎么写正则规则;

然后还可以使用另一种方法:

import re
ret=re.search(r'<(\w+)>\w+</\1>',"<h1>hello</h1>")
print(ret.group())

运行结果:

匹配整数

import re
ret=re.findall('-?\d+\.\d+|(-?\d+)','-23*34.25+78-23.12+23-89')
ret.remove('')  #因为有两个空格
ret.remove('')
print(ret)

这里用到了findall()在匹配字符串时,如果前面的正则规则是包含分组,则会优先匹配分组中的内容,之所以还会写前面那个匹配小数的就是因为如果只写或|h后面的 那么结果就会包含小数的整数部分,这显然是不合理的~

运行结果:

数字匹配

1. 匹配一段文本中每行的邮箱: http://blog.csdn.net/make164492212/article/details/51656638

import re
ret=re.search(r'\w+://\w+\.\w+\.\w+/\w+/\w+/\w+/\w+','http://blog.csdn.net/make164492212/article/details/51656638')
print(ret.group())

运行结果:

 2. 匹配一行文本中每行的时间字符串,比如:1990-07-15(有一点问题有待解决,,,,)

import re
ret=re.search('[1-2]\d{3}-[0]\d-[0-2]\d|([30,31])','1990-07-15')
print(ret.group())

其实这个写的有问题,就是中间的月份我不知道怎么分开匹配,用|或的话后面的时间就匹配不上啦,,,

运行结果:

 3. 匹配QQ号(从10000开始)

import re
ret=re.search('[1-9][]0-9]{4,}','2398409012023')
print(ret.group())

运行结果:

4. 匹配浮点数

import re
ret=re.search('\d+\.\d+','45.56')
print(ret.group())

运行结果:

5. Eva-J博客上的爬虫我没看太懂,,,,

6.作业题---实现一个计算器(使用正则表达式)

实现能计算类似 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )等类似公式的计算器程序

 待完善。。。

猜你喜欢

转载自www.cnblogs.com/xuanxuanlove/p/9630494.html