r的作用

Python中在正则字符串前面加上 ‘r‘ 表示,

让正则中的 '\' 不再具有转义功能(默认为转义),就是表示原生字含义一个斜杠 \

  • 原来的写法
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import re

# 匹配html标签
result = re.match("<([a-zA-Z0-9]*)>.*</\\1>", "<html>helloworld</html>")
# 判断是否可以匹配成功
if result:
    # 匹配成功,返回匹配结果
    print(result.group())
else:
    print("匹配失败!")

image-20180913144439147

  • 使用 r 的写法
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import re

# 匹配html标签
result = re.match(r"<([a-zA-Z0-9]*)>.*</\1>", "<html>helloworld</html>")
# 判断是否可以匹配成功
if result:
    # 匹配成功,返回匹配结果
    print(result.group())
else:
    print("匹配失败!")

image-20180913145114927

说明

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

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