py转义和re.escape

在这里插入图片描述
re.escape就是让一个正则表达式里面的*?+\等等都失去特殊含义,而使用其字面
比如上面的\d和*在正则表达式里表示数字和"任意个",如果想使它们失去特殊含义,则可以对\和*用\转义,使其变成字面意思
也就是说pattern应该为

\\d\*#$

但是这是我们想表达的字符串,和我们实际书写的字符串不一样,正如想表达一个反斜杠\我们要写的是两个反斜杠\\
因此上面的pattern在实际书写的时候是

\\\\d\\*#$

第1对反斜杠表示字面pattern中的第1个\
第2对反斜杠表示字面pattern中的第2个\
第3对反斜杠表示字面pattern中的第3个\

可以使用print函数来查看一个书写的字符串实际表达出的字符串,如
在这里插入图片描述
在正则表达式里面想表达一个字面意思的反斜杠,在书写时要写4个反斜杠,
要表达一个字面意思的*,在书写时要在其前面多写两个反斜杠
为了方便在正则表达式里面让所有含有特殊含义的字符(实际上是除字母数字下划线以外所有的字符,不管有没有特殊含义)都变成字面意思,re提供了escape函数


legal_chars = string.ascii_lowercase + string.digits + "!#$%&'*+-.^_`|~:"  +  '\\'

print(legal_chars)
abcdefghijklmnopqrstuvwxyz0123456789!#$%&'*+-.^_`|~:\

legal_chars
Out[136]: "abcdefghijklmnopqrstuvwxyz0123456789!#$%&'*+-.^_`|~:\\"

b=re.escape(legal_chars)

b
Out[138]: "abcdefghijklmnopqrstuvwxyz0123456789\\!\\#\\$\\%\\&\\'\\*\\+\\-\\.\\^_\\`\\|\\~\\:\\\\"

print(b)
abcdefghijklmnopqrstuvwxyz0123456789\!\#\$\%\&\'\*\+\-\.\^_\`\|\~\:\\

从上面的代码可以看出:
1.下划线没有escape,没有在前面加两个反斜杠
2.一个反斜杠escape为4个字面反斜杠,实际代表2个反斜杠
3.有些在正则表达式中没有特殊含义的字符也在前面加了2个反斜杠

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值