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]:
-----------------------------------------------------------------------------------
# 2、通过 match 方法,验证正则
# re.match("正则表达式", "要验证/检测的字符串")
# match() 方法如果匹配成功,返回 match object 对象
# match() 方法如果匹配失败,返回 None
# 正则字符串 要检测的内容
result = re.match("\w{4,20}@163\.com$", "hello@163.com")
print("匹配结果:", result.group())
print(result.start())
print(result.end())
print(result.span())
• 判断是否检测/匹配成功if result:
print("成功")
else:
print("失败")
• 取出匹配的具体内容result.group() 获取匹配的具体内容 hello@163.com
result.start() 0
result.end() 13
result.span() (0, 13)
-----------------------------------------------------------------------------------
# 那么如果我想要匹配字符串中的 c:\\ ,我在匹配规则就要写 c:\\\\ ,因为\\会被转义为一个 \
#result.group() 获取匹配的具体内容,提取要匹配的内容
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里的原生字符串很好地解决了这个问题,有了原生字符串,你再也不用担心是不是漏写了反斜杠,写出来的表达式也更直观。