在学习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相关推荐

  1. Python 正则表达式各种特殊符号 重点

    Python 正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式. r ...

  2. python 正则表达式 re.compile() 的使用

    1 re.compile() 的解释: python 正则表达式 re.compile() 将正则表达式编译成一个Pattern规则对象,单独使用compile 没有意义,他生成的是一个规则,需要ma ...

  3. Python正则表达式,看这一篇就够了

    作者 | 猪哥 来源 | 裸睡的猪(ID: IT--Pig) 大多数编程语言的正则表达式设计都师从Perl,所以语法基本相似,不同的是每种语言都有自己的函数去支持正则,今天我们就来学习 Python中 ...

  4. Python 正则表达式

    最近研究Python爬虫,很多地方用到了正则表达式,但是没好好研究,每次都得现查文档.今天就专门看看Python正则表达式.本文参考了官方文档 re模块. 模式 首先正则表达式的语法我就不说了,这玩意 ...

  5. Python正则表达式初识(二)

    前几天给大家分享了[Python正则表达式初识(一)],介绍了正则表达式中的三个特殊字符"^"."."和"*",感兴趣的伙伴可以戳进去看看, ...

  6. python正则表达式需要模块_使用Python正则表达式模块,让操作更加简单

    处理文本数据的一个主要任务就是创建许多以文本为基础的特性. 人们可能想要在文本中找出特定格式的内容,比如找出存在于文本中的电子邮件,或者大型文本中的电话号码. 虽然想要实现上述功能听起来很繁琐,但是如 ...

  7. python正则表达式re.sub用法

    python正则表达式re.sub用法 https://cloud.tencent.com/developer/article/1382055 python正则表达式re.sub用法 全面的 http ...

  8. 【Python】一文读懂Python正则表达式常用用法

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 编辑:爱学AI 来源:geekvi   链接: www.segmentfault.co ...

  9. Python正则表达式常用的15个符号整理

    http://blog.itpub.net/31403259/viewspace-2157778/ Python正则表达式常用的15个符号整理: 1. ? 匹配0次或一次前面的分组(问号在正则表达式中 ...

  10. Python正则表达式使用的四个基本步骤

    http://blog.itpub.net/31403259/viewspace-2157701/ Python正则表达式使用的四个基本步骤     1.用import re导入正则表达式模块     ...

最新文章

  1. 成功爬取CVE-2019-9766漏洞复现【CSDN】【1】
  2. Linux 编译内核
  3. MyBatis中的@Mapper注解及配套注解使用详解
  4. 最全的 eclipse web 项目目录结构
  5. mysql 5.6 缓存_为什么默认情况下从MySQL 5.6开始禁用query_cache_type?
  6. PC网页实现九宫格切图功能
  7. PythonOpenCV--Rtrees随机森林
  8. CRM one order性能调优指南
  9. ug添加imachining变量_UG用的不够快?是不是还没建标准库
  10. c语言键盘按f1显示f1,windows10键盘f1变成功能键的两种解决方法
  11. ssh:Permissions 0644 for ‘/root/.ssh/id_rsa’ are too open
  12. linux未使用磁盘空间满,linux磁盘空间用满的处理方法
  13. SAP License:如何利用DEBUG强力修改表(暴力破解)
  14. LeetCode 304. 二维区域和检索 - 矩阵不可变(动态规划)
  15. springboot集成quzytz(简单易使用复制即可)
  16. 关于qt使用sqlist数据库的注意事项
  17. sox处理mp3_SOX 音频处理
  18. oracle数据库赋权
  19. 【网络安全】威胁情报信息
  20. php script是什么,script是什么意思

热门文章

  1. opengl 加载贴图Unknown DIB file format问题
  2. Atitit 运营之道 互联网产品运营之道 attilax、著 1. 概念 2 1.1. 核心点 内容 媒体 用户 活动 数据分析 2 2. 第二章内容运营   2 2.1. 2.1 创建用户模
  3. Atitit. 解决unterminated string literal 缺失引号
  4. paip..net c# 调用JS JAVASCRIPT变量与方法
  5. 基金公司产品管理系统搭建与推广
  6. 一级市场,退出有多难?
  7. 万得VS腾讯QTrade:兵分两路,B端见?
  8. 他用代码卖手机,卖出年流水上亿
  9. ECS 云助手,实现云上运维自动化
  10. 机器学习笔记(二十四):召回率、混淆矩阵