本帖最后由 BIO-张磊 于 2020-7-27 09:16 编辑
re.search(pattern,string)
其中pattern进行了两步转义,而string只进行一步转义,举个例子
- re.search('ABC\\001','ABC\\001')
复制代码
这个你可能认为是完全匹配,其实是错误的,pattern部分的ABC\\001其实变成了ABC\x01(因为这里先ABC\\001转义变成ABC\001再转义变成了ABC\x01),而string部分的ABC\\001是ABC\001(只进行了ABC\001的转义)
所以上面的完全匹配应该是
- re.search('ABC\\001','ABC\001')
复制代码
我们再来看看r这个符号
r符号只是避免了第一次转义,那也就是说re.search的pattern部分的两次转义变成了第一步不进行,直接第二步转义,而string部分的转义就没有了(因为它只有第一步转义)
所以
- re.search(r'ABC\\001',r'ABC\\001')#pattern部分的r'ABC\\001'变成ABC\001,而string部分的r'ABC\\001'就是ABC\\001
复制代码- re.search(r'ABC\001',r'ABC\\001')#pattern部分的r'ABC\001'变成ABC\x01,而string部分的r'ABC\\001'就是ABC\\001
复制代码
没结果
但是
- re.search(r'ABC\\001',r'ABC\001')#其中pattern部分的r'ABC\\001'变成ABC\001,string部分的r'ABC\001'就是ABC\001
复制代码
可以匹配