正则表达式使用反斜杠('\')来把特殊字符转义成普通字符(为了方便称为“正则表达式转义”),而反斜杠在普通的 Python 字符串里也是转义符(称为“字符串转义”),这样两者在反斜杠转义的处理上就产生了冲突。比如说,要匹配一个字符串里面的反斜杠,因为正则表达式里匹配一个反斜杠必须是\\,而每个反斜杠在普通的 Python 字符串里都要写成\\,最后正则表达式模式不得不写成'\\\\'

一个比较好的解决办法是对于正则表达式的模式使用 Python 的原始字符串表示法,由于原始字符串中所有字符直接按照字面意思来使用,不转义特殊字符,故不做“字符串转义”,直接进入“正则表达式转义”,在正则表达式转义中“\\”被转义为了“\”,表示该正则式需要匹配一个反斜杠。从上述分析来看,原始字符串与“正则表达式转义”毫无关系,原始字符串仅在“字符串转义”中起作用,使字符串免去一次转义。因此正则表达式中使用原始字符串可以有效规避字符串转义与正则表达式转义的冲突,因此推荐就算是最简单的正则表达式,也要使用原始字符串。

案例:

>>> re.search(r'c:\\temp',r'c:\temp\test.txt',re.I)
<re.Match object; span=(0, 7), match='c:\\temp'>
>>>

老猿Python,跟老猿学Python!

博客地址:https://blog.csdn.net/LaoYuanPython


请大家多多支持,点赞、评论和加关注!谢谢!

最新文章

  1. mysql查询语句中用户变量的使用
  2. C++ 迭代器模式实现
  3. JAVA基础知识之IO——对象序列化
  4. ACE - 代码层次及Socket封装
  5. go五笔——基于Google在线五笔制作
  6. Linux下搭建Oracle11g RAC(4)----配置oracle,grid用户SSH对等性
  7. DataGrid( 数据表格) 组件[4]
  8. 利用btrace工具监控在线运行java程序
  9. Git双机同步
  10. VS 2017 激活码
  11. 看Linux 之父是如何定义 Linux?
  12. centos 安装 composer
  13. gcc编译把警告都输出成错误
  14. TCP/IP具体解释学习笔记——地址解析协议ARP
  15. CodeForces 55D Beautiful numbers (SPOJ JZPEXT 数位DP)
  16. 淘宝TDDL配置以及使用
  17. Beautiful Soup的一些中文资料
  18. scrapy框架爬取豆瓣读书(1)
  19. 2013.10.26工作Fighting(1)
  20. 注意!!一定要谨慎使用c/c++原生指针

热门文章

  1. NodeJs 加入Windows开机自启动服务
  2. kubernetes-1.18.2集群安装-02
  3. JavaScript ES 模块:现代化前端编程必备技能
  4. 四、c++总结------linux多线程服务端编程
  5. ASCII、Unicode、UTF-8、UTF-8(without BOM)、UTF-16、UTF-32傻傻分不清
  6. python + appium 执行报错整理
  7. CTDB与LVS搭建集群
  8. Java面试那些事
  9. 常见web漏洞修复方法
  10. 如何正确地安装MathType 7?