Python——字符串和正则表达式中的反斜杠('\')问题详解
off999 2024-11-14 16:58 26 浏览 0 评论
在本篇文章里小编给大家整理的是关于Python字符串和正则表达式中的反斜杠('\')问题以及相关知识点,有需要的朋友们可以学习下。
在Python普通字符串中
在Python中,我们用'\'来转义某些普通字符,使其成为特殊字符,比如
1 In [1]: print('abc\ndef') # '\n'具有换行的作用
2 abc
3 defg
4
5 In [2]: print('abc\tdef') # '\t'具有制位符的作用
6 abc defg
我们还可以用'\'来转义特殊字符,使其成为普通字符,比如
1 In [3]: print('abc\\tdef') # 使'\'成为一个普通的字符,没有转义作用
2 abc\tdef
3
4 In [4]: print('abc\'tdef') # 使'''成为一个普通的字符,不再需要和另一半单引号'''配对
5 abc'tde
在Python原生字符串中所以,在python普通字符串中,我们不能以奇数个'\'结尾,这样会导致结束的的引号转义成一个纯字符,从而使得这段字符串没有引号来结束。
我们在字符串前加一个'r'来表示原生字符串,比如r'abc'。原生字符串中的特殊字符的特殊含义将会被剥夺掉,如下
1 In [5]: print(r'abc\ndefg') # '\n'没有换行的作用,仅仅是一个普通的字符串 2 abc\ndefg 3 4 In [6]: print(r'abc\tdefg') # '\t'没有制位符的作用,仅仅是一个普通的字符串 5 abc\tdef
这里有一个奇怪的问题,在原生字符串中,虽然'\'成为了一个普通的字符串,但我们同样不能以奇数个'\'字符串结尾,这是因为Python正则表达式的原因,在正则表达式中我们将会解释这个问题。
在Python(regular express)正则表达式中
Python正则表达式中会有一些不同,正则表达式中指定了一些元字符(metacharacter),如下
1 . ^ $ * + ? { } [ ] \ | ( )
它们都具有特殊的含义,'\'也属于元字符。'\'既属于Python中的特殊字符,也属于正则中的元字符,所以使用时得非常小心。那么在正则中,'\'的作用是什么呢?我们看一个例子
1 In [7]: re.search('.', 'sd.f')
2 Out[7]: <_sre.SRE_Match object; span=(0, 1), match='s'>
3
4 In [8]: re.search('\.', 'sd.f')
5 Out[8]: <_sre.SRE_Match object; span=(2, 3), match='.'>In [9]: re.search('\n', 'sdfd\nfds') Out[9]: <_sre.SRE_Match object; span=(4, 5), match='\n'>
6
7 """
8 '.'作为一个元字符,它的特殊含义是匹配任意一个字符,而当我们在其前面加'\'后,它的特殊含义消失了,匹配到的是'.';而且'\'依然可以把Python中某些字符转义成特殊字符。
9 """
在正则中,'\'的作用是把元字符转义成Python字符串文字(a Python string literal),所以正则中的'\\'其实是其实是Python字符中的'\',它仍然还具有转义作用,所以在正则中我们还得对每个'\'再进行转义一次,即'\\\\',这样就可以匹配到纯字符'\'了。看下面例子所以,'\'的作用是剥夺元字符的特殊含义,使其成为一个Python字符,所以它还是会具有在Python普通字符串中的转义作用,比如'\n'依然表示换行。所以,'\'既是正则中的一个元字符,又是Python中的一个特殊字符。那么我们该如何匹配到纯字符'\'(无任何特殊意义)?
1 In [10]: re.search('\\\\', 'fsd\nfds') # 目标字符串中没有纯字符'\',所以匹配为空
2
3 In [11]: re.search('\\\\', 'fsd\\nfds')
4 Out[11]: <_sre.SRE_Match object; span=(3, 4), match='\\'> # Python字符串中,'\\'就是纯字符'\'
在re中反复的使用'\',这可能会生成大量的连续的反斜杠,从而导致某些字符串难以理解。解决的办法是用Python原生字符串来书写正则表达式,如下
1 In [12]: re.search(r'\\', 'fsd\\nfds') # 两个'\\'就可以匹配到纯字符'\' 2 Out[12]: <_sre.SRE_Match object; span=(3, 4), match='\\'>
另外,当我们用原生字符串来书写正则表达式时,Python字符中的特殊字符依然有效,比如
1 In [13]: re.search(r'\n', 'fsd\nfds') 2 Out[13]: <_sre.SRE_Match object; span=(3, 4), match='\n'> """ 在Python字符中,r'\n'仅仅表示纯字符串'\n',没有换行的作用;在正则中,r'\n'依然还有换行的作用。所以此时我们不能用奇数个'\'来结尾某个正则表达式,这样导致结束的引号被转义成一个纯字符,无结束符号。所以,在Python原生字符串中,我们也同样规定不能用奇数个'\'来结尾。 """
以上就是本次介绍的全部知识点内容,觉得文章还可以的话不妨点个赞,有任何意见或者看法欢迎大家评论!
我是一名python开发工程师,整理了一套python的学习资料,如果你想提升自己,对编程感兴趣,关注我并在后台私信小编:“08”即可免费领取资料!希望对你能有所帮助!
相关推荐
- 最新卫星地图(最新卫星地图高清在线观看)
-
实时地球是中科遥感集团开发的中国卫星影像地图软件,被誉为中国版的“谷歌地球”。在线地球采用遥感集市云平台数据接口,每天动态更新高分辨率卫星影像,同时内置近年历史影像存档数据,所有影像免费开放浏览。用...
- 免费伴奏网(免费伴奏网址大全)
-
推荐下列5个伴奏网:99伴奏网这个网站提供有很多免费伴奏下载,包括男歌手伴奏,女歌手伴奏,组合伴奏,合唱伴奏,民歌伴奏,儿歌伴奏,改版伴奏,戏曲伴奏,婚礼伴奏等。免费伴奏–乱推网一个伴奏搜索下载网站,...
- 强力安卓恢复精灵(强力安卓恢复精灵是不是免费的)
-
您好,强力安卓恢复精灵是不可以恢复微信好友的。删除的好友不能像QQ好友有恢复找回功能,只有另外搜索添加。强力安卓恢复精灵挺好用的,在手机数据删除的时候还可以恢复,特别是将本人删除的微信聊天记录也恢复了...
- 电脑安装ktv点歌系统(怎么在电脑上安装ktv点歌)
-
在你的电脑上增加硬盘容量,用来装基本的歌曲库再在电脑上增加一个音视频输出设备,安装一套点歌系统就可以了。(1)硬盘容量大小根据您所需要歌曲的格式及数量来决定。以4分钟的MTV为例,一首DVD歌曲占用...
- 45到65岁大龄工招工(45到65岁大龄工招工女)
-
应该有。一般是服务行业,手工业。现在服务行业招不到年轻人,只有年纪大点的才肯应聘。家政公司招人一般会需要,养老机构也需要照顾老年人的人。传统手工业,只有年纪大的人会,必须招人,65岁也可以,特别是旅游...
- qq牧场手机版官方下载(qq牧场手机版官方正版下载)
-
建议进行以下操作:1.检查手机网络连接是否稳定,建议更换无线网络尝试。2.更新软件版本尝试。3.点击手机应用程序-设定-应用程序管理器-已下载-选择出现问题的应用-清除数据4.将数据备份(联系人,短信...
- 取名软件免费版(取名软件免费版有哪些)
-
没啥好的软件的,去年年底我家娃起名字的时候,我们也下载了一堆软件,都没啥实用的;要么你付费去让人家起名,要么就用免费的试用一下,多找几个试用,然后把名字汇总起来,再找找合适的!这个肯定是有的,但是亲建...
- 手机北斗导航下载(手机北斗导航下载哪个软件)
-
北斗导航没有具体的APP,不能直接使用,但是现在国内的流行导航APP都是使用的北斗导航的地图,所以我们只需要在手机应用商城下载现下的导航APP如高德地图、地图等,就可以在这些软件中使用到北斗导航系统。...
- 会员管理软件(美发店会员管理软件)
-
洗车店会员卡管理软件,用电子会员版的好些,客户只需要带上手机,关注微信公众号,登记手机号,就可以查询到会员充值信息、消费信息、卡内余额或项目等信息。还可以发送消费短信,告知客户余额或剩余套餐卡项目,会...
- 世界杯2025赛程表(u23世界杯2025赛程表)
-
2022年卡塔尔世界杯(英语:TheFIFAWorldCup-Qatar2022)是第二十二届世界杯足球赛,是历史上首次在卡塔尔和中东国家境内举行、也是继2002年韩日世界杯之后时隔二十年...
- player安卓版下载(finalswfplayer安卓版下载)
-
使用手机直接下载,那就是在手机iTunes里面搜索下载歌曲,然后就会自动添加到音乐软件程序里面去。使用电脑同步,就是在电脑上面下载安装iTunes,然后把歌曲加载到电脑版iTunes音乐资料库里面,然...
-
- 360浏览器官方网站(360浏览器-影视新闻资讯小说浏览)
-
360极速浏览器的入口是http://chrome.360.cn/360极速浏览器(360chrome)无缝融合双核引擎,采用了最快速的Chromium内核及兼容性最好的IE内核,360极速浏览器简洁人性化的设计,更好用,360极速浏览器囊...
-
2026-01-16 18:15 off999
- 不受限制的万能浏览器手机版
-
在万能浏览器里面,UC浏览器是最好用的。UC浏览器是阿里巴巴旗下的一个浏览器,它整体上给人的感觉是非常友好而且非常流畅,关键的是它很少有广告,同时呢也不会劫持别人的这个浏览器,而且他这个视频看起来非...
-
- 下载安装qq浏览器(下载安装QQ浏览器)
-
若手机不能下载软件,建议您:1.查看软件下载说明,是否对软件安装平台、手机系统版本等有要求。2.检查下载的软件格式是否正确:安卓系统手机支持的软件格式为.APK。3.检查手机内存是否已满,打开手机设定-存储-可用空间。4.查看下载的...
-
2026-01-16 17:43 off999
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
系统u盘安装(win11系统u盘安装)
-
Python 批量卸载关联包 pip-autoremove
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
