python正则\\\d、\\\\d、r'\\d'的理解

  • 这串代码,是正则中当我想寻找字符串‘\d’的时候可以使用的。
c = re.compile('\\\d')
s = c.search('\d')
if s:
    print(s.group())
#这样可以查找到要寻找的值,不过如果你使用:
c = re.compile('\\\\d')
s = c.search('\d')
if s:
    print(s.group())

也是可以寻找到的,为什么会这样?
我查询理解了一下:
因为当我们要寻找的是‘\d’这个字符串时,它在正则中表示的是匹配任何数字,是一个有特殊含义的字符,所以我们在写正则的时候需要转义‘\d’的’'是普通的杠,不会和’d’起连锁反应
这时候我们要注意,转义有两个含义,一个是普通字符串的转义,另一个就是正则里面的转义;
比如:

‘\\d’前面两个普通斜杠的转义剩下一个不会转义的斜杠,后面的\d又没什么特别作用,所以直接进入正则内(个人觉得是普通优于正则),这时候两个斜杠转义就剩下一个不会转义的斜杠了。
'\\d’这个同上,前两个普通斜杠的转义剩下一个不会转义的斜杠,不会转义的斜杠与后面不起连锁反应,但是别忘了这是4个,还有两个普通斜杠的,所以进入正则之前就有了两个不会转义的斜杠,所以在进入正则后两个斜杠转义最终成了不能转义的字符斜杠了。

这个也是可以这样写的:

c = re.compile(r'\\d')
s = c.search('\d')
if s:
    print(s.group())

但是’r’不是表示原生字符串的吗?为什么加上了还要在上里面转义一下;
考虑下上面
两个普通斜杠转义为不能转义的斜杠,在进入正则后才刚恢复能够转义,又被r转移一下,成了不能转义的斜杠了。
刚入门,努力多学点

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值