re.split时关于参数re.I的疑惑

本文探讨了在解析HTML标签时使用正则表达式进行split操作的问题。通过示例代码展示了如何实现大小写模糊匹配,并解释了由于参数传递错误导致的分割次数限制。通过调整参数位置,成功实现了大小写不敏感的split,从而正确地分割了HTML标签。
摘要由CSDN通过智能技术生成

当解析HTML标签时,用正则表达式对标签字符串进行split

其中希望做到大小写模糊匹配,选择使用re.I

于是给出如下代码A:

import re
text = "<abc>abc efg hij</klmn>"
lst = re.split(r"[<>/ ]", text, re.I)
print(lst)

运行结果如下:

['', 'abc', 'abc efg hij</klmn>']

这并不是想要的结果。

发现给出如下代码B时可以按想要结果split,但是做不到大小写模糊匹配:

import re
text = "<abc>abc efg hij</klmn>"
lst = re.split(r"[<>/ ]", text)
print(lst)

运行结果如下:

['', 'abc', 'abc', 'efg', 'hij', '', 'klmn', '']

产生上述问题的原因在于:

re.split()接受四个参数:依次为pattern, string, maxsplit, flag。最后两个参数可选,最大分割次数默认为0,即最大;flag默认为无。

在代码A中,re.I由于位置传参被放到了第三个参数的位置,re.I的二进制值为10,所以只进行了两次分割(二进制数10即为十进制数2)

给出如下代码C即可解决问题:(进行关键值传参)

import re
text = "<abc>abc efg hij</klmn>"
lst = re.split(r"[<>/ ]", text, flags=re.I)
print(lst)

运行结果如下:

['', 'abc', 'abc', 'efg', 'hij', '', 'klmn', '']

芜湖~

注:有关split时过滤空串的问题见之前的文章哦~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值