关于Python正则式中的r和字符串中的r

 

正则表达式也是字符串,但是不是普通的字符串,其中包含了正则转义和字符串转义。正则表达式前边加r是取消了字符串转义,但是正则转义还在。

例1和例2的对比中,例2的正则表达式取消了普通字符串转义,但是\n在正则表达式里是匹配换行符。

例2和例3的对比中,例3的被匹配对象实际是两个字符,一个是\一个是n,正则是一个换行符,所以匹配不上。

例4中,被匹配对象’\\\n’经过字符串转义,等效为了两个字符,一个是\一个是换行符,正则是一个换行符,所以能够匹配上,而且匹配的是第二个字符,所以索引是(1,2),注意左闭右开。

例5中,正则的’\\n’会转义为两个字符,一个是\,一个是n,被匹配对象也是,所以能够匹配上,索引是(0,2)。

例6中和例5同理,被匹配对象有r的存在,\n不会转义为转义为换行符,所以是两个字符,一个是\一个是n。

例7中,正则的r取消了正则转义,但是字符串转义还在,所以\\\\会转义为\\两个字符,被匹配对象的\\\\会根据字符串转义为\\两个字符,所以匹配结果索引为(0,2)。

同理,大家可以思考下例8,为什么?

posted @ 2023-10-24 16:15  理工—王栋轩  阅读(94)  评论(0编辑  收藏  举报