Python3基础-正则表达式转义注意事项
python中对元字符的转义使用双反斜杠 \\ 来表示
# 普通元字符的转义 # 不转义 print(re.findall('$', '!@#$%^&')) #>>> [''] # 双反斜杠转义 print(re.findall('\\$','!@#$%^&')) #>>> ['$'] # 单反斜杠转义 print(re.findall('\$', '!@#$%^&'))
使用一个反斜杠 \ 也可以达到转义的效果,那为什么还要写两个呢?
s = 'i\'m superman' #python本身使用 \ 来转义一些特殊字符 print(s) #输出 i'm superman
#print('\') #报错 SyntaxError: EOL while scanning string literal 因为\把后面的引号给转义了
print('\\') #输出的是 \
#原生字符串 print(r'\\') # 输出的是 \\
字符串转义
eg \n 换行
print('Hello \W world \npython') """ 执行结果为 Hello \W world python 备注:“\n”已转义为换行符,而“\W”没有发生转义,原因是“\W”在“字符串转义”中并不对应着特殊字符,没有特殊含义。 """
原封不动输出为“Hello\World\nPython”
#方法1 \\ print('Hello \W world \\npython') #方法2 r print(r'Hello \W world \npython') """ 执行结果 Hello \W world \npython Hello \W world \npython """
正则转义
import re string = '3\8' m = re.search('(\d+)\\\\', string) if m is not None: print(m.group(1)) # 结果为:3 \\\\ 字符转义成\\ 再正则转义为\ n = re.search(r'(\d+)\\', string) if n is not None: print(n.group(1)) #结果为3 r \\ 字符转义还是\\ 再正则转义为\ #正则表达式字符串需要经过两次转义,这两次分别是上面的“字符串转义”和“正则转义”