正则表达式也是字符串,但是不是普通的字符串,其中包含了正则转义和字符串转义。正则表达式前边加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,为什么?
标签:字符,匹配,Python,转义,正则,字符串,换行符 From: https://www.cnblogs.com/lgwdx/p/17785102.html