码迷,mamicode.com
首页 > 其他好文 > 详细

分组在re模块中的使用以及使用正则表达式的技巧

时间:2018-08-17 22:23:57      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:正则表达   必须   bsp   port   技巧   html   style   col   print   

1.split:切割

使用split不会返回被切割的字符

1 import re
2 ret = re.split("\d+","5as46asf46asf46a")
3 print(ret)

结果为:[‘‘, ‘as‘, ‘asf‘, ‘asf‘, ‘a‘]

要想返回被切割的数字,需要在正则表达式前后加( )

1 import re
2 ret1 = re.split("(\d+)","5as46asf46asf46a")
3 print(ret1)

结果为:[‘‘, ‘5‘, ‘as‘, ‘46‘, ‘asf‘, ‘46‘, ‘asf‘, ‘46‘, ‘a‘]

2.分组命名:(?P<这个组的名字>正则表达式)

1 import re
2 s = "<a>wahaha</a>"
3 ret = re.search("<\w+>(?P<abc>\w+)</\w+>",s)
4 print(ret.group())#结果为<a>wahaha</a>
5 print(ret.group("abc"))#结果为wahaha

3.使用findall可以取到分组中的内容,在表达式中加( )可以优先显示分组中的内容

1 import re
2 s = "<a>wahaha</a>"
3 ret = re.findall("<\w+>(\w+)</\w+>",s)
4 print(ret)#结果为["wahaha"]

如果要取消分组优先,使用(?:正则表达式)

1 import re
2 s = "<a>wahaha</a>"
3 ret = re.findall("<\w+>(\w+)</\w+>",s)
4 ret1 = re.findall("<\w+>(?:\w+)</\w+>",s)
5 print(ret)#结果为["wahaha"]
6 print(ret1)#结果为["<a>wahaha</a>"]

在网页html中,如果使用分组,要求使用这个名字的分组和前面的同名分组中的内容匹配的必须一致

前一个标签可以用?P<tab>,后一个标签可以用?P=tab

import re
1
pattern = "<(?P<tab>\w+)>(\w+)</(?P=tab)>" 2 ret = re.search(pattern,s) 3 print(ret.group())#结果为:<a>wahaha</a>

 

4.

1 import re
2 ret1 = re.findall(r"\d+\.\d+|\d+","1-2*(60+(-40.35/5)-(-4*3))")
3 print(ret1)结果为:[‘1‘, ‘2‘, ‘60‘, ‘40.35‘, ‘5‘, ‘4‘, ‘3‘]

如果要过滤掉小数:

1 import re
2 ret2 = re.findall(r"\d+\.\d+|(\d+)","1-2*(60+(-40.35/5)-(-4*3))")
3 print(ret2)结果为:[‘1‘, ‘2‘, ‘60‘, ‘‘, ‘5‘, ‘4‘, ‘3‘]

 

分组在re模块中的使用以及使用正则表达式的技巧

标签:正则表达   必须   bsp   port   技巧   html   style   col   print   

原文地址:https://www.cnblogs.com/s593941/p/9494802.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!