zoukankan      html  css  js  c++  java
  • Python正则表达式re.search(r'*{3,8}','*****')和re.search('*{3,8}','*****')的匹配结果为什么相同?

    老猿做过如下测试:

    >>> re.search(r'*{3,100}','*****')
    <re.Match object; span=(0, 5), match='*****'>
    >>> re.search('*{3,100}','*****')
    <re.Match object; span=(0, 5), match='*****'>
    >>>
    

    这二者的区别就是正则表达式前一个加了原始字符串标记r,一个未加,老猿开始理解原始字符串形式和非原始字符串形式在反斜杠的处理上应该不同,这两个的搜索结果就应该不一样,但最终为什么一致呢?
    原因就在于字符串形式的正则表达式处理时,会先进行字符串转义处理,再进行正则表达式转义处理,而字符串转义处理时“*”不被识别,因此保持原串信息传递给了正则表达式转义,也就是”*”与r”*”是同样的字符串。在Python中也可以直接验证,如下:

    >>> "*"==r"*"
    True
    >>>
    

    所以这两个正则表达式的匹配结果完全相同。
    老猿Python,跟老猿学Python!
    博客地址:https://blog.csdn.net/LaoYuanPython

    请大家多多支持,点赞、评论和加关注!谢谢!

  • 相关阅读:
    01模拟面试面试题汇总
    第一轮面试
    大觅网03Day
    大觅网02Day
    大觅网01Day
    树状数组
    HH的项链
    小z的袜子
    分块
    扩展欧几里德
  • 原文地址:https://www.cnblogs.com/LaoYuanPython/p/13643622.html
Copyright © 2011-2022 走看看