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

时间:2022-06-22
本文章向大家介绍Python 正则表达式(r的作用)- 一个关于反斜杠转义的故事,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

r的作用

In [132]: str1 = "c:\a\b\c"                                                    

In [133]: str1                                                                    
Out[133]: 'c:\a\b\c'

In [134]: print(str1)                                                             
c:abc

# 从上面这两个打印,可以看出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:abc

In [145]: ret = re.match(r"c:\a\b\c",str1).group()                             

In [146]: print(ret)                                                              
c:abc

In [147]:  

说明

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

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

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