思路是参照的下面这篇博客,平时re用的挺多,但是分组操作用的确很少,灵活运用分组操作能简化很多操作
测试用例:
content="""<table><tbody><tr><td>测试1</td></tr></tbody></table><br/><table><tbody><tr><td>测试1</td></tr></tbody></table><br/>"""
目的:
在所有标签后添加一个自定义标签
content = re.sub('</{0,1}table.*?>|</{0,1}tbody.*?>|<th.*?>|<tr.*?>|<td.*?>|</th>|</tr>|</td>|<br/>',r'\g<0><split/>', content,flags=re.I | re.S)
|
代表表达式a|表达式b|表达式c|表达式d|表达式e...
\g<0>
代表所有匹配结果
\g<0><split/>
代表在所有匹配结果后添加<split/>
正则表达式分组
分组就是用一对圆括号“()”括起来的正则表达式,匹配出的内容就表示一个分组。从正则表达式的左边开始看,看到的第一个左括号“(”表示第一个分组,第二个表示第二个分组,依次类推,需要注意的是,有一个隐含的全局分组(就是0),就是整个正则表达式。
r'(分组1)(分组2)(分组3)(分组4)(分组5)'
对应编号为1,2,3,4,5
0代表全部分组
使用group(num)和groups()函数可以获取分组中的内容
命名分组
命名分组就是给分组起一个别名,在引用时用这个名字即可
(?P<name>正则表达式)
使用group(name)
去引用名为name的分组
参考资料:
正则表达式分组