广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >正则表达式中关于对原生字符串的简单理解
  • 133
分享到

正则表达式中关于对原生字符串的简单理解

摘要

在正则表达式中,有些字符是有特殊意义的字符。因此如果想要匹配这些字符,那么就必须使用反斜杠进行转义。比如$代表的是以...结尾,如果想要匹配$,那么就必须使用\$。示例代码如下: t

正则表达式中,有些字符是有特殊意义的字符。因此如果想要匹配这些字符,那么就必须使用反斜杠进行转义。比如$代表的是以...结尾,如果想要匹配$,那么就必须使用\$。示例代码如下:

text = "apple price is \$99,orange paice is $88"
ret = re.search('\$(\d+)',text)
print(ret.group())
>> $99

原生字符串:

在正则表达式中,\是专门用来做转义的。在python中\也是用来做转义的。因此如果想要在普通的字符串中匹配出\,那么要给出四个\。示例代码如下:

text = "apple \c"
ret = re.search('\\\\c',text)
print(ret.group())

因此要使用原生字符串(r标记)就可以解决这个问题:

text = "apple \c"
ret = re.search(r'\\c',text)
print(ret.group())

那么原理是什么呢?为什么在不使用r来标记原生字符串的时候需要四个\呢?使用r的时候需要两个\呢?

我们需要先来了解一下正则表达式的一个匹配过程,例如 ret = re.search('\\\\c',text) 这句代码:我们都知道 \ 字符无论是在Python中还是正则表达式中都表示转义字符,这句代码 首先python将其解释成 \\c(第一个和第三个\分别表示转义,那么第二个和第四个表示普通字符\,最终即成为了\\c),接下来正则表达式拿到\\c后第一个\表示转义,因此将最后解释为普通的 \c 两个字符,再去匹配的文本里比较。而使用r来标记原生字符串后,python默认解释其为\\c三个字符,最后交由正则表达式再经过转义后即普通的\c两个字符。 

原生字符串这里比较绕,希望对大家有所帮助

补充:在正则表达式的使用过程中,有个小小的疑问r‘’ ,代表什么意思?

其实在《Python基础教程》中,作者已经进行了详细的说明。

加入要匹配字符串‘python.org’,可以直接使用‘python.org’ 吗?当然是可以的,但是不要忘记 “.” 代表通配符,此时也与‘pythonaorg’匹配。

怎么让'.'不代表统配符呢?只要加上‘\’即可,但是为了表示模块re要求的单个反斜杠,需要再字符串中加入两个反斜杠,让解释器对其进行转义,(这里不太理解),作者解释为解释器执行的转义和模块re执行的转义。

如果厌烦了两个反斜杠,只需使用r'python\.org' 

总结

到此这篇关于正则表达式中关于对原生字符串的文章就介绍到这了,更多相关正则表达式原生字符串内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 正则表达式中关于对原生字符串的简单理解

本文链接: https://www.lsjlt.com/news/172210.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作