Python 正则表达式(r的作用)- 一个关于反斜杠转义的故事
时间:2022-06-22
本文章向大家介绍Python 正则表达式(r的作用)- 一个关于反斜杠转义的故事,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
r的作用
In [132]: str1 = "c:\a\b\c"
In [133]: str1
Out[133]: 'c:\a\b\c'
In [134]: print(str1)
c:abc
# 从上面这两个打印,可以看出print对反斜杠进行了转义,将两个 转义为了一个
In [135]:
# 那么如果我想要匹配字符串中的 c:\ ,我在匹配规则就要写 c:\\ ,因为\会被转义为一个
In [135]: re.match("c:\\",str1).group()
Out[135]: 'c:\'
In [136]:
# 而如果再用print来打印的时候,就会发现 \ 再次被转义为了
In [136]: ret = re.match("c:\\",str1).group()
In [137]: print(ret)
c:
In [138]:
# 那么如果需要匹配字符串 c:\a 的话,那么匹配规则就要写 c:\\a 了。这样就比较麻烦。有没有简单的方法呢?
In [138]: ret = re.match("c:\\a",str1).group()
In [139]: print(ret)
c:a
# 在匹配规则前面加 r ,那么就只是要写 c:\a 就可以匹配字符串 c:\a 了。
In [141]: ret = re.match(r"c:\a",str1).group()
In [142]: print(ret)
c:a
In [143]:
In [143]: ret = re.match("c:\\a\\b\\c",str1).group()
In [144]: print(ret)
c:abc
In [145]: ret = re.match(r"c:\a\b\c",str1).group()
In [146]: print(ret)
c:abc
In [147]:
说明
Python中字符串前面加上 r 表示原生字符串
与大多数编程语言相同,正则表达式里使用""
作为转义字符,这就可能造成反斜杠困扰。
假如你需要匹配文本中的字符""
,那么使用编程语言表示的正则表达式里将需要4个反斜杠"\"
:前两个和后两个分别用于在编程语言里转义成反斜杠,转换成两个反斜杠后再在正则表达式里转义成一个反斜杠。
Python里的原生字符串很好地解决了这个问题,有了原生字符串,你再也不用担心是不是漏写了反斜杠,写出来的表达式也更直观。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Esxi安装LEDE(OpenWrt) | 旧电脑变庞路由
- [白话解析] 深入浅出贝叶斯定理
- LEDE(OpenWrt)安装openclash |旁路由技巧 | 配置网络流量全部通过旁路由
- [白话解析] 深入浅出朴素贝叶斯模型原理及应用
- 【Java面试总结】Java基础(下篇)
- 使用现代化的脚本进行 ArcGIS JS API 开发
- TextField suffixIcon点击时TextField 选中弹出键盘<Flutter Bug篇>
- seata redis模式重构之全局事务更新
- 【STM32F407】第7章 RL-TCPnet V7.X网络协议栈移植(RTX5)
- 【STM32F429】第7章 RL-TCPnet V7.X网络协议栈移植(RTX5)
- [白话解析] 深入浅出 极大似然估计 & 极大后验概率估计
- 【STM32H7】第7章 RL-TCPnet V7.X网络协议栈移植(RTX5)
- TinyMCE 富文本编辑器的使用实例指导
- dotnet 在国产 UOS 系统利用 dotnet tool 工具做文件传输
- [白话解析] 深入浅出支持向量机(SVM)之核函数