python 正则表达式1
在学习python正则表达式的过程中一直对为什么要加原生字符串非常不理解,也不清楚为什么要使用"\b",经过讨论有一点新的收获,还不知道是否正确,现总结出来,望看到的伙伴多多评论,多多指正。
1.正则表达式
首先要清楚正则表达式是用于处理字符串的强大工具,它并不是python的一部分,而是嵌入python的微小的、高度专业化的语言。正则表达式拥有自己独特的语法。
不同的语言均有使用正则表达式的方法,各不相同,python通过re模块来实现。
2. 转义字符(以前的笔记引用别人的,忘记在哪里看的了,感谢!)
转义字符不是python这门语言所独有的,准确的讲,这是一个计算机专业词汇。
在计算机当中,我们可以写出123 ,也可以写出字母abcd,
但有些字符我们无法手动书写,比如我们需要对字符进行换行处理,但不能写出来换行符,当然我们也看不见换行符。
像这种情况,我们需要在字符中使用特殊字符时,就需要用到转义字符。
3. “\b”的特殊
但在python中"\b"表示退格符,删去前面一个字符。
# 在python中:\b: 退格符
a = '我今天不吃火锅'
b = '我今天不\b吃火锅'
print('a的输出结果:', a)
print('b的输出结果:', b)
而在正则表达式中"\b"是表示匹配单词的开始或结尾。
针对这种情况,当我们在python正则表达式中使用"\b"时,我们希望"\b"依照正则的解析方式,而不是python的解析方式,因此,需要在前面加上r(raw string),告诉python不先使用python的方式对r后面的字符串进行解析,而是保留原样。
当给定一组字符串
q = 'my shop name My_SHOP my_shop '
我们想找出所有以m开头的字符串时,可以使用的正则表达式为
'\bm\w*\b'
但是当我们将上面这个模块放入python,发现python按照退格符解析该模块
q = 'my shop name My_SHOP my_shop 'pattern = '\bm\w*\b'print(pattern)
输出结果为:
但是我们使用python并放在正则表达式中不希望"\b"解析为退格符,此时可以使用r模式
pattern1 = r'\bm\w*\b'
print(pattern1)
结果为:
因此当在python中使用正则表达式时,为了避免python对模式字符串按照python语法而非正则语法进行解析,我们需要使用r
q = 'my shop name My_SHOP my_shop 'pattern = '\bm\w*\b'
pattern1 = r'\bm\w*\b'
res = re.findall(pattern1, q, re.I) # 找到以m开头的单词,不区分大小写print(pattern)
print(pattern1)
print(res)
此时,模块字符串将不被提前解析,而被按照原本的 '\bm\w*\b’带入findall函数。
这样模块字符串才是正确的。而没有r的 '\bm\w*\b’即pattern代表的字段,再进行findall函数计算前,已被解析为"m\w" 字符串,而非需要的正则表达式。
python 正则表达式1相关推荐
- Python 正则表达式各种特殊符号 重点
Python 正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. r ...
- python 正则表达式 re.compile() 的使用
1 re.compile() 的解释: python 正则表达式 re.compile() 将正则表达式编译成一个Pattern规则对象,单独使用compile 没有意义,他生成的是一个规则,需要ma ...
- Python正则表达式,看这一篇就够了
作者 | 猪哥 来源 | 裸睡的猪(ID: IT--Pig) 大多数编程语言的正则表达式设计都师从Perl,所以语法基本相似,不同的是每种语言都有自己的函数去支持正则,今天我们就来学习 Python中 ...
- Python 正则表达式
最近研究Python爬虫,很多地方用到了正则表达式,但是没好好研究,每次都得现查文档.今天就专门看看Python正则表达式.本文参考了官方文档 re模块. 模式 首先正则表达式的语法我就不说了,这玩意 ...
- Python正则表达式初识(二)
前几天给大家分享了[Python正则表达式初识(一)],介绍了正则表达式中的三个特殊字符"^"."."和"*",感兴趣的伙伴可以戳进去看看, ...
- python正则表达式需要模块_使用Python正则表达式模块,让操作更加简单
处理文本数据的一个主要任务就是创建许多以文本为基础的特性. 人们可能想要在文本中找出特定格式的内容,比如找出存在于文本中的电子邮件,或者大型文本中的电话号码. 虽然想要实现上述功能听起来很繁琐,但是如 ...
- python正则表达式re.sub用法
python正则表达式re.sub用法 https://cloud.tencent.com/developer/article/1382055 python正则表达式re.sub用法 全面的 http ...
- 【Python】一文读懂Python正则表达式常用用法
点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 编辑:爱学AI 来源:geekvi 链接: www.segmentfault.co ...
- Python正则表达式常用的15个符号整理
http://blog.itpub.net/31403259/viewspace-2157778/ Python正则表达式常用的15个符号整理: 1. ? 匹配0次或一次前面的分组(问号在正则表达式中 ...
- Python正则表达式使用的四个基本步骤
http://blog.itpub.net/31403259/viewspace-2157701/ Python正则表达式使用的四个基本步骤 1.用import re导入正则表达式模块 ...
最新文章
- 成功爬取CVE-2019-9766漏洞复现【CSDN】【1】
- Linux 编译内核
- MyBatis中的@Mapper注解及配套注解使用详解
- 最全的 eclipse web 项目目录结构
- mysql 5.6 缓存_为什么默认情况下从MySQL 5.6开始禁用query_cache_type?
- PC网页实现九宫格切图功能
- PythonOpenCV--Rtrees随机森林
- CRM one order性能调优指南
- ug添加imachining变量_UG用的不够快?是不是还没建标准库
- c语言键盘按f1显示f1,windows10键盘f1变成功能键的两种解决方法
- ssh:Permissions 0644 for ‘/root/.ssh/id_rsa’ are too open
- linux未使用磁盘空间满,linux磁盘空间用满的处理方法
- SAP License:如何利用DEBUG强力修改表(暴力破解)
- LeetCode 304. 二维区域和检索 - 矩阵不可变(动态规划)
- springboot集成quzytz(简单易使用复制即可)
- 关于qt使用sqlist数据库的注意事项
- sox处理mp3_SOX 音频处理
- oracle数据库赋权
- 【网络安全】威胁情报信息
- php script是什么,script是什么意思
热门文章
- opengl 加载贴图Unknown DIB file format问题
- Atitit 运营之道 互联网产品运营之道 attilax、著 1. 概念	2 1.1. 核心点 内容 媒体 用户 活动 数据分析	2 2. 第二章内容运营 	2 2.1. 2.1 创建用户模
- Atitit. 解决unterminated string literal 缺失引号
- paip..net c# 调用JS JAVASCRIPT变量与方法
- 基金公司产品管理系统搭建与推广
- 一级市场,退出有多难?
- 万得VS腾讯QTrade:兵分两路,B端见?
- 他用代码卖手机,卖出年流水上亿
- ECS 云助手,实现云上运维自动化
- 机器学习笔记(二十四):召回率、混淆矩阵