Python正则表达式中的'r'用法总结

 更新时间:2023年04月28日 11:53:05   作者:INEVGVUP  
正则表达式即使用一个字符串来描述、匹配一系列某个语法规则的字符串,python中r作用是除去''里面转意字符,在pyhton自动化中比较常用的,下面这篇文章主要给大家介绍了关于Python正则表达式中的'r'用法总结的相关资料,需要的朋友可以参考下

Python正则表达式中的'r'

最近遇到一个非常困惑的地方,那就是在使用Python中的正则表达式的时候,正则表达式前面的’r’带来的影响。自己最开始的困惑点在于,’r‘的作用是声明为原始字符串,那么按照此种逻辑,‘\n’匹配的就是换行符,而r’\n’匹配的不就是原始的’\‘和’n’两个字符嘛。但是可以发现r’\n’也可以匹配换行符,这就让笔者感到非常疑惑。经过分析参考,自己得出了一套解释,不一定正确,大家可以作为一定的参考。

import re
data = "Give a thumb up!\nThank you!"
print(data)
print(re.findall('\n', data))
print(re.findall(r'\n', data))

发现输出如下所示,可以发现r’\n’依然能够匹配换行符

一、Python字符串前面加'r'

对于Python字符串,前面加’r’的解释较为简单,就是决定一个字符串是否为原生字符串,具体示例如下所示

data1 = "Give a thumb up!\nThank you!"
print(data1)
data2 = r"Give a thumb up!\nThank you!"
print(data2)

输入如下所示

二、正则表达式匹配原理

下面给出自己对于正则匹配过程的理解,这部分完全为个人理解,本质上是为了解释文章开始提出的那个奇怪的问题。当我们在程序中定义了一个正则表达式,首先会对给出的字面的正则表达式做一个转换,例如如果定义一个正则表达式为’\\\\‘,那么这个字面的’\\\\‘会进行转义,那么正则表达式里面的值就是’\\‘。此时,正则表达式的值为’\\‘,那么进行匹配时,’\\‘匹配的就是’\‘,第一个’\‘代表转义,所以此时进行匹配,就能够匹配原始字符串中的’\'。程序运行如下

data = "Give\Thank you!"
print(data)
tmp_str = []
tmp_str.append(data[4])
print(tmp_str)
print(re.findall('\\\\', data))

程序输入如下所示

为了更好解释匹配原理,画一张图来解释

三、正则表达式前面加'r'

由上述的原理图,那么在正则表达式前面加’r’相当于是原生字符串,会导致正则表达式接受的值就是被赋值的字面值,也就相当于Python解释器不会进行转换了,赋值r’\\‘,那么正则表达式接受的值就是’\\',示例如下所示

data = "Give a thumb up\Thank you!"
print(data)
print(re.findall(r'\\', data))

运行结果如下

那接下来看一个例子,来理解’\n’有关的问题

data = "Give a thumb up\nThank you!\nMua"
print(data)
print(re.findall('\n', data))
print(re.findall(r'\n', data))
print(re.findall('\\n', data))
print(re.findall(r'\\n', data))

输出如下

第一种情况,字面为’\n’,那么正则表达式实际接受的值为换行符,换行符直接就可以匹配字符串中的换行符

第二种情况,正则表达式实际接受的值为’\n’,‘\n’在匹配的时候代表换行符,能够匹配出字符串中的换行符

第三种情况,字面值为’\\n’,Pyhton解释器经过解释,对’\\‘进行转义,正则表达式实际接收的值为’\n’,在匹配时能够匹配换行符

第四种情况,为原生字符串,正则表达式实际接收的值为’\\n’,‘\\n’在进行匹配时对’\\‘进行转义,所以匹配的是’\'和’n’两个字符,验证此种情况如下

data = r"Give a thumb up\nThank you!\nMua"
print(data)
print(re.findall('\n', data))
print(re.findall(r'\n', data))
print(re.findall('\\n', data))
print(re.findall(r'\\n', data))

总结

到此这篇关于Python正则表达式中的'r'用法总结的文章就介绍到这了,更多相关Python正则表达式'r'内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • tensorflow 初始化未初始化的变量实例

    tensorflow 初始化未初始化的变量实例

    今天小编就为大家分享一篇tensorflow 初始化未初始化的变量实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • python3中set(集合)的语法总结分享

    python3中set(集合)的语法总结分享

    这篇文章主要总结了关于python3中set(集合)的语法的相关资料,文中给出了详细的示例代码,对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-03-03
  • Python中PyQt5可视化界面通过拖拽来上传文件的实现

    Python中PyQt5可视化界面通过拖拽来上传文件的实现

    本文主要介绍了Python中PyQt5可视化界面通过拖拽来上传文件的实现,通过构建一个可接受拖拽的区域,并重写相关事件处理函数,可以方便地实现文件上传功能,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • python条件变量之生产者与消费者操作实例分析

    python条件变量之生产者与消费者操作实例分析

    这篇文章主要介绍了python条件变量之生产者与消费者操作,结合具体实例形式分析了Python条件变量的概念、原理、及线程操作的相关技巧,需要的朋友可以参考下
    2017-03-03
  • Python中字典映射类型的学习教程

    Python中字典映射类型的学习教程

    这篇文章主要介绍了Python中字典映射类型的学习教程,是Python入门学习中的基础知识,需要的朋友可以参考下
    2015-08-08
  • Gradio构建交互式Python应用使用示例详解

    Gradio构建交互式Python应用使用示例详解

    这篇文章主要为大家介绍了Gradio构建交互式Python应用使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • 如何使用Django默认的Auth权限管理系统

    如何使用Django默认的Auth权限管理系统

    本文主要介绍了如何使用Django默认的Auth权限管理系统,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • Python数据结构之栈、队列及二叉树定义与用法浅析

    Python数据结构之栈、队列及二叉树定义与用法浅析

    这篇文章主要介绍了Python数据结构之栈、队列及二叉树定义与用法,结合具体实例形式分析了Python数据结构中栈、队列及二叉树的定义与使用相关操作技巧,需要的朋友可以参考下
    2018-12-12
  • 浅谈python中scipy.misc.logsumexp函数的运用场景

    浅谈python中scipy.misc.logsumexp函数的运用场景

    下面小编就为大家带来一篇浅谈python中scipy.misc.logsumexp函数的运用场景。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • python采集微信公众号文章

    python采集微信公众号文章

    这篇文章主要为大家详细介绍了python采集微信公众号文章的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12

最新评论