美文网首页
Python 正则表达式(r的作用)- 一个关于反斜杠转义的故事

Python 正则表达式(r的作用)- 一个关于反斜杠转义的故事

作者: Devops海洋的渔夫 | 来源:发表于2018-12-23 15:55 被阅读68次

    仅供学习,转载请注明出处

    r的作用

    In [132]: str1 = "c:\\a\\b\\c"                                                    
    
    In [133]: str1                                                                    
    Out[133]: 'c:\\a\\b\\c'
    
    In [134]: print(str1)                                                             
    c:\a\b\c
    
    # 从上面这两个打印,可以看出print对反斜杠进行了转义,将两个\ 转义为了一个 \
    
    In [135]:  
    
    # 那么如果我想要匹配字符串中的 c:\\ ,我在匹配规则就要写 c:\\\\ ,因为\\会被转义为一个 \
    In [135]: re.match("c:\\\\",str1).group()                                         
    Out[135]: 'c:\\'
    
    In [136]:  
    
    # 而如果再用print来打印的时候,就会发现 \\ 再次被转义为了 \ 
    In [136]: ret = re.match("c:\\\\",str1).group()                                   
    
    In [137]: print(ret)                                                              
    c:\
    
    In [138]:   
    
    # 那么如果需要匹配字符串 c:\\a 的话,那么匹配规则就要写 c:\\\\a 了。这样就比较麻烦。有没有简单的方法呢?
    In [138]: ret = re.match("c:\\\\a",str1).group()                                  
    
    In [139]: print(ret)                                                              
    c:\a
    
    # 在匹配规则前面加 r ,那么就只是要写 c:\\a 就可以匹配字符串 c:\\a 了。
    In [141]: ret = re.match(r"c:\\a",str1).group()                                   
    
    In [142]: print(ret)                                                              
    c:\a
    
    In [143]:   
    
    In [143]: ret = re.match("c:\\\\a\\\\b\\\\c",str1).group()                        
    
    In [144]: print(ret)                                                              
    c:\a\b\c
    
    In [145]: ret = re.match(r"c:\\a\\b\\c",str1).group()                             
    
    In [146]: print(ret)                                                              
    c:\a\b\c
    
    In [147]:  
    

    说明

    Python中字符串前面加上 r 表示原生字符串

    与大多数编程语言相同,正则表达式里使用"\"作为转义字符,这就可能造成反斜杠困扰。
    假如你需要匹配文本中的字符"\",那么使用编程语言表示的正则表达式里将需要4个反斜杠"\\":前两个和后两个分别用于在编程语言里转义成反斜杠,转换成两个反斜杠后再在正则表达式里转义成一个反斜杠。

    Python里的原生字符串很好地解决了这个问题,有了原生字符串,你再也不用担心是不是漏写了反斜杠,写出来的表达式也更直观。


    关注微信公众号,回复【资料】、Python、PHP、JAVA、web,则可获得Python、PHP、JAVA、前端等视频资料。

    相关文章

      网友评论

          本文标题:Python 正则表达式(r的作用)- 一个关于反斜杠转义的故事

          本文链接:https://www.haomeiwen.com/subject/sijnkqtx.html