python 正则表达式 无需手动调用re.compile()

#python 正则表达式 手动调用re.compile()是否有必要#

  1. 前两天老师讲到了正则表达式的使用,其中re.compile()总让人觉得不舒服,明明可以

    import re
    words='asd 123 aaaf found 张三 404 沈圳'
    rules=r'[\u4e00-\u9fa5]'
    res=re.findall(rules,words)
    

    却非要

    import re
    words='asd 123 aaaf found 张三 404 沈圳'
    rules=re.compile(r'[\u4e00-\u9fa5]')
    res=re.findall(rules,words)
    

这时候有人给我解释说:当有非常多条字符串同时需要同一个正则表达式去匹配的时候,使用第二种方式是正确的。假如使用第一种,就相当于你把一段正则表达式无形中re.compile()了很多次!

嗯,这个解释看上去有道理,那就这样了?

不存在的

2.这种说法在一些语言中确实是对的,就是说java,但是在python中,确实不需要手动调用re.compile()

  1. 打开Pycharm,在py文件中输入

    import re
    re.findall

  2. 按住ctrl键点击’findall‘,查看
    在这里插入图片描述
    同时常用的还有 match,search等,也继续看
    在这里插入图片描述
    所以说,我们常用的正则表达式方法,在python里都是标配有compile的,无需多劳去调用re.compile()

  3. 继续去看_compile()
    在这里插入图片描述
    也就是说,_compile会自带缓存,存由‘type(pattern),pattern,flags’组成的key值
    也就是说,当你在用同一个正则表达式去多次匹配的时候,flag相同,它会自动去调用缓存里面的compile()的结果,而无需像java那样 在一开始手动去调用re.compile()。

说实话,我之前觉得这样的行为毫无意义。但是最近在一篇篇的读一位前辈的博客,现在觉得,这也是小白前进路上的乐趣吧。
附上前辈 :www.kingname.info
本篇也是他针对这个问题的解释。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值