python笔记之转义问题 字符串前缀 正则表达式

news2025/1/16 13:51:46

Python的字符串自己也用\转义

s = 'ABC\\-001' # Python的字符串
# 对应的正则表达式字符串变成:
# 'ABC\-001'

建议使用Python的r前缀,就不用考虑转义的问题了

s = r'ABC\-001' # Python的字符串
# 对应的正则表达式字符串不变:
# 'ABC\-001'

关于斜杠 / 和反斜杠 \ (网图,侵删)

Python 字符串前缀r、u、b、f含义
1、r/R表示raw string(原始字符串)
在普通字符串中,反斜线是转义符,代表一些特殊的内容,如换行符\n,前缀r表示该字符串是原始字符串,即\不是转义符,只是单纯的一个符号。常用于特殊的字符如换行符、正则表达式、文件路径。

str1 = "Hello\nWorld"
str2 = r"Hello \n World"
print(str1)
print(str2)
# 打印结果如下:
Hello
World
Hello \n World

2、u/U表示unicode string(unicode编码字符串)
前缀u表示该字符串是unicode编码,Python2中用,用在含有中文字符的字符串前,防止因为编码问题,导致中文出现乱码。另外一般要在文件开关标明编码方式采用utf8。Python3中,所有字符串默认都是unicode字符串。
3、b/B表示byte string(转换成bytes类型)
常用在如网络编程中,服务器和浏览器只认bytes类型数据。如:send 函数的参数和 recv 函数的返回值都是 bytes 类型。
4、f/F表示format string(格式化字符串)
前缀f用来格式化字符串。可以看出f前缀可以更方便的格式化字符串,比format()方法可读性高且使用方便。

name = "张三"
age = 20
print(f"我叫{name},今年{age}岁。")  #  我叫张三,今年20岁。
print("我叫{name},今年{age}岁。")  #  我叫{name},今年{age}岁。

正则表达式(匹配字符串)

.  匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用像 '[.\n]' 的模式
\d 能够匹配一个数字
\w 能够匹配一个字母或数字正
\s 能够匹配一个空格(也包括Tab等空白符),因此\s+表示至少有一个空格
* 表示任意个字符(包括0个)
+ 表示至少一个字符
? 表示0个或1个字符
.* 可以匹配任意长度的任意字符
.*? 非贪婪匹配,能完成匹配的情况下,尽可能匹配少的字符

举个例子解释非贪婪匹配

s='hello 1234567 world'
res = re.match('he.*(\d+).*rld$',s)
print(res.group(1))     #7, 因为he后面的.*把123456也匹配了
res = re.match('he.*?(\d+).*rld$',s)
print(res.group(1))     #1234567,因为从数字1开始\d+可以匹配,所以.*就停止匹配了
s='hello 1234567 world/python'
res1 = re.match('he.*?(\d).*rld/(.*?)',s)
print('res1',res1.group(2))  #空串,因为.*?尽可能少匹配
{n}表示n个字符
{n,m}表示n-m个字符
[a-zA-Z\_][0-9a-zA-Z\_]{0, 19}匹配由字母或下划线开头,后接任意个由一个数字、字母或者下划线组成的字符串,长度是1-20个字符(前面1个字符+后面最多19个字符)
A|B能够匹配A或B,因此(P|p)ython能够匹配'Python'或者'python'
^表示行的开头,^\d表示必须以数字开头
$表示行的结束,\d$表示必须以数字结束
\d{3}\-\d{3,8} 可以匹配  '010-12345'
(?P<name>group) 的使用
例如(?P<value>\d+)的意思就是命名一个名字为value的组,匹配规则符合后面的/d+

总结图 (网图,侵删)
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/158946.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RGB、LVDS、MIPI和EDP接口液晶屏

RGB、LVDS、MIPI和EDP接口液晶屏概述一、RGB_TTL二、LVDS三、MIPI&#xff08;手机、平板等数码产品应用场合&#xff09;四、eDP接口&#xff08;笔记本、工控机、工业平板等应用场合&#xff0c;用来取代LVDS接口&#xff09;五、应用概述 液晶屏有RGB、LVDS、MIPI DSI和EDP等…

《MYSQL实战45讲》笔记(1-10)

1&#xff1a;一条SQL查询语句是如何执行的&#xff1f; 下面我们来结合一张图来了解MySQL的基本架构 总体来看&#xff0c;MySQL分为服务层和存储引擎两个部分。其中存储引擎负责数据的存储和提取&#xff0c;而服务层负责连接的建立、分析、优化、执行等其他步骤。 常见的…

虚幻引擎中GPU Lightmass全局光照的使用步骤

GPU Lightmass (GPULM) 是一种光烘焙方法&#xff0c;它预先计算来自具有 Stationary 或 Static 移动性的灯光的复杂光交互&#xff0c;并将该数据存储在创建的应用于场景几何体的光照贴图纹理中。GPU Lightmass 显着减少了为复杂场景计算、构建和生成光照数据所需的时间&#…

MQTT QoS 0, 1, 2 介绍

什么是 QoS 很多时候&#xff0c;使用 MQTT 协议的设备都运行在网络受限的环境下&#xff0c;而只依靠底层的 TCP 传输协议&#xff0c;并不能完全保证消息的可靠到达。因此&#xff0c;MQTT 提供了 QoS 机制&#xff0c;其核心是设计了多种消息交互机制来提供不同的服务质量&…

自监督学习之掩码自动编码器(Masked Autoencoders, MAE)——音频识别方面

自监督学习之掩码自动编码器(Masked Autoencoders, MAE)——音频识别方面 1.参考文献 《Masked Autoencoders that Listen》 2.背景 Transformers和self-supervised learning(自监督学习)占据了计算机视觉(Computer Vision,CV)和自然语言处理(natural language processing, …

百度工程师带你玩转正则

作者 | 向阳 导读 在很多技术领域&#xff0c;都有正则的身影。但许多像我一样的人&#xff0c;只闻其名。因此将正则常用知识汇总&#xff0c;便于查阅。正则表达式&#xff08;Regular Expression&#xff09;是用于描述一组字符串特征的模式&#xff0c;用来匹配特定的字符串…

机械--UG NX2007改变零件的默认颜色

UG&#xff08;现在的新版本叫NX&#xff0c;但一般人仍然沿用UG的叫法&#xff0c;下同&#xff09;&#xff0c;新建零件时&#xff0c;零件的默认颜色是橙色的&#xff0c;个人很不喜欢。 当然&#xff0c;实体化以后&#xff0c;可以改变它的颜色&#xff0c;选中实体以后…

傻瓜式裂变—竖屏视频超级原创,呆头鹅批量剪辑软件上万人使用

呆头鹅批量剪辑软件优势&#xff1a; 专业的技术开发团队&#xff0c;成熟的技术架构&#xff0c;完整的售后服务&#xff0c;我们为您解决所有的后顾之忧 .几乎涵盖市面上已知的所有剪辑功能.几乎涵盖市面上已知的所有剪辑功能.完成通知&#xff0c;运行间隔提醒&#xf…

201:vue+openlayers:加载geojson文件形成围栏,可添加、修改、删除feature,导出geojson

第201个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+openlayers中实现围栏列表与图中feature双向互动功能。 利用GeoJSON().readFeatures获得到features,通过转换在地图上形成图形,通过新增、修改、删除feature,可以更改整体的features关系。点击导出可以将修改后的…

工厂安全着装识别检测算法 python

工厂安全着装识别检测算法通过Python基于YOLOv5技术&#xff0c;对现场画面中的人员着装穿戴进行实时分析检测自动抓拍存档告警。Python是一种由Guido van Rossum开发的通用编程语言&#xff0c;它很快就变得非常流行&#xff0c;主要是因为它的简单性和代码可读性。它使程序员…

现在才开始学测试晚了么

相信问这样问题的朋友&#xff0c;对软件测岗位存在着很深的误解。实际上&#xff0c;相对于其他的技术岗位来讲&#xff0c;软件测试入门可以说是相对简单的了&#xff0c;因此多晚学习都来得及。其次&#xff0c;这个行业的就业前景广阔&#xff0c;像测试主管、自动化架构师…

k8s之Service

写在前面 本文接k8s之DaemonSet 。 通过Deployment我们可以实现一直有指定个数的POD在运行&#xff0c;而通过DaemonSet可以实现在每个Node上都有一个POD在运行&#xff0c;不管是这两种方式中的哪一种&#xff0c;都是仅仅实现了有若干个POD在运行的效果&#xff0c;但是还无法…

【AdaBoost算法】

AdaBoost算法的原理介绍 AdaBoost算法核心思想 AdaBoost算法 (Adaptive Boosting) 是一种有效而实用的Boosting算法&#xff0c; 它以一种高度自适应的方法顺序地训练弱学习器。AdaBoost根据前一次的 分类效果调整数据的权重&#xff0c;上一个弱学习器中错误分类样本的权重会…

【MySQL】易忘易错函数和经典例题

目录一、函数1. UNION ALL 以及 UNIONUNION ALLUNION2. group_concat二、例题&#xff1a;1. 列转行2. 行转列3. 查找第N高的数据&#xff0c;没有则返回null一、函数 1. UNION ALL 以及 UNION union&#xff1a;对多个结果&#xff0c;去重排序 union all&#xff1a;对多个…

AB测试——原理介绍(中心极限定理、大数定理、假设检验、两类错误)

作为AB测试的学习记录&#xff0c;本文主要整理总结了AB测试背后的数学原理和一些概念解释。 1、控制变量法 基于控制变量法的思想&#xff0c;通过对比两组样本&#xff08;实验组和对照组&#xff09;的表现是否有差异&#xff0c;从而验证“变量”的作用。 借用中学生物课…

Linux常用命令——xauth命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) xauth 显示和编辑被用于连接X服务器的认证信息 补充说明 xauth命令用于显示和编辑被用于连接X服务器的认证信息。 语法 xauth(选项)(参数)选项 -f&#xff1a;不使用默认的认证文件&#xff0c;而使用指定的…

动手深度学习-线性神经网络:softmax回归

目录1.分类问题2. 网络架构3.softmax运算4. 损失函数交叉熵损失函数参考教程&#xff1a;https://courses.d2l.ai/zh-v2/ 1.分类问题 从回归到多类分类&#xff1a;对类别进行一位有效编码——独热编码&#xff08;one-hot encoding&#xff09;。 独热编码是一个向量&#x…

HTTP与HTTPS的区别,HTTPS提高性能,HTTP2的新特性

目录数据传输区别安全性区别端口区别交互区别HTTPS的工作流程HTTPS的实现原理机密性完整性身份认证和不可否认HTTPS 使用流程HTTPS性能优化点HTTP2的特性向下兼容HTTP/1头部压缩二进制虚拟流、多路复用数据传输区别 http也相当于HTTP协议&#xff0c;是超文本传输协议的意思&a…

PyQt6快速入门-多文档界面(MDI)

多文档界面(MDI) 文章目录 多文档界面(MDI)1、子窗口创建2、主窗口创建3、运行结果多文档界面(Multi Document Interface,MDI)是一种应用程序界面管理方法。MDI应用程序一般由一个主窗口和多个子窗口组成,这些子窗口在主窗口里显示,并共享主窗口的菜单栏,工具栏。在MDI应用…

netty(1):NIO 基础之三大组件和ByteBuffer

1 三大组件 1.1 Channel & Buffer channel 有一点类似于 stream&#xff0c;它就是读写数据的双向通道&#xff0c;可以从 channel 将数据读入 buffer&#xff0c;也可以将 buffer 的数据写入 channel&#xff0c;而之前的 stream 要么是输入&#xff0c;要么是输出&…