当前位置: 首页 > news >正文

说说转义字符 “\”

转义字符-escape character

character 表示字符,包含两层含义,
1.字母
2.符号

转义:	改变含义
字符:	字母、符号
转义字符: 把 字母、符号 的含义改变了

注意:这里有 2 个常常被忽视、忽略、轻视的转义规则
1.一对一转义
就是说,\只对离它最近的那一个字母符号进行转义
2.只进行表层转义,不会进行嵌套或者递归转义(举例:\\\\ 在python 看来是 \\ 而不是 \),这里看不懂就往下看,看到最后就明白什么意思了。

计算机语言中,用 \ 实现转义的功能
其实,就是人为规定,给\多增加赋予了一个特殊的含义,\本身是个符号 反斜杠,同时它在编程语言中,还具备一个含义是告诉编程语言看到它的时候,就要开始做转义的工作了。
c族、java、python 这些语言都要遵守这个规则,编程语言一旦看到 \,就知道 \ 后面的字符有了新的含义,跟在\后面的字符就不再是它原有具备的意思了。

来看,计算机语言中最典型的两个 被转了义的字母
LF/NL(Line Feed/New Line) 换行 \n
CR (Carriage Return) 回车 \r

字母 n 前面没有 \ 的时候,它就是一个普通的英文字母(字母表中排序第 14 位) ,可以和别的字母站在一起,形成一个单词,这就是它的含义,
比如:sun、on、know
但是,当 字母 n 前面有 \ 的时候,它就不再是那个普普通通的英文字母 n 了,它有了新的含义,这个含义,需要编程语言在看到 \ 的时候,去查询 计算机语言的规则(约定俗成、都必须遵守的章程),然后找到了它的新的含义是 回车(Carriage Return) ,然后编程语言就执行回车命令,来实现回车功能

python 语言来举个例子,
python 语言,是个有自己的解释器的语言,顺便解释一下 解释器,当你用记事本写了一段代码保存成了 py 文件,然后直接交给操作系统去执行,操作系统就懵逼了,你要嘎哈,你想嘎哈,面对着你编写的程序不知所措,这时候,就需要 python 用自带的 解释器 帮你把代码翻译给操作系统,操作系统就明白了原来你是让操作系统启动核弹发射器,然后操作系统就按照你的意图,跟随 python 解释器的翻译一步一步执行你的代码去毁灭世界了。

那么,你在写程序的时候,突然想让你的程序输出个换行(程序运行的时候),该怎么办?
那该有同学说了:那还不简单按个回车呗,没错按个回车确实能换行,但这个换行只是给你自己看的(编程的时候),而你要求的是,在别人执行你的程序时看到换行(编写程序的时候和程序运行的时候是两个不同的时态),你总不能跟着你的程序到处跑,等程序执行到换行那一步的时候,由帅气的你亲自按下回车键吧,如果只是一个电脑运行你的程序还好,那要是全国人民都在运行你的程序,你就是化身齐天大圣恐怕也忙不过来了吧。

转义字符就能解决这个棘手的问题,
在你的程序里写入代码 \n ,当程序运行的时候,python 看到符号 \ 就知道 \后面的 n 不再是普通字母了,于是立即去尝试解释并到编程语言规则表里查到 n 是换行的意思,就进行了换行操作。你的程序就顺利的执行下去,全国人民笑开颜。

好了,目前我们知道了一个普通的字母跟在\后面就有了新的含义,那符号捏?

咱们也别拐弯抹角的啦,直接上高难度的,\\ 是啥意思,
拿上面的规则套呗,当程序中出现了\编程语言就会开始准备做转义处理, \后面的字母、符号,表示这个字母、符号具备了新的意义,
但这次发现\后面跟的不是字母,而是符号,一查规则表里说了,跟在\后面的符号,就变成了普通的符号(文本的,字面上的,或者说字面打印),而不再具备其他的任何附加的功能和含义了,就是一个单纯的字面上的文本符号

来跑段代码试试:
1.\n
\n表示换行,因此,字母a 和 字母b被打印到了不同的行上,
在这里插入图片描述
2.\\n
python 遇到第一个\,开始准备做转义的工作,发现后面不是字母,是字符,所以进行解释查规则表,把第二个\的附加功能和多余的含义去掉(即第二个\n不需要对其后面的字符进行转义工作),只保留其本身作为一个文本符号的含义,因此就打印输出了符号和字母的组合\n,最终打印结果是 a\nb
在这里插入图片描述
可见,在python代码中要输出文本符号 \,就需要在它的前面再加上一个\,即\\


加高难度,
加深理解
先看代码:
在这里插入图片描述
这说明,\只对离它最近的那一个字符进行转义的工作,
实际上,如果给print中的代码标上序号的话,我们在打印结果中看到的应该是 第二、第四、第六个 \,而第一、第三、第五个\完成了它的转义工作被消耗掉了。

假如我们在python里再使用正则表达式模块re ,会有什么不同吗?

在这里插入图片描述
可见,对于我们给定的字符串 str_test 的里面包含了 6 个 \ 反斜杠符号,
我们在 re 中指定的匹配规则是 :\\\\ ,所以当程序执行到这里看到出现了\,因此要开始进行解释转义工作了,连续的 4 个 \,根据一对一的原则,第一、第三个\参与了转义解释工作被消耗掉,第二、第四个\被剥夺了附加的功能和含义后作为纯粹的字面上的文本的符号保留下来,即 \\,而转义规则说过,只进行表层转义,不会嵌套、递归转义,所以,剩下的两个符号 \\,不会进行第二轮的转义工作变成 \

因此,re 根据匹配规则,在字符串 str_test 里搜索 文本双字符(两个反斜杠) \\,共找到 3 对 \ ,即 3 个 \\

看到这里,必须整明白了吧,不许还有糊涂的。
否则就参加不上第三次世界大战了。

march the 07th 2023 Tuesday

相关文章:

说说转义字符 “\”

转义字符-escape character character 表示字符,包含两层含义, 1.字母 2.符号 转义: 改变含义 字符: 字母、符号 转义字符: 把 字母、符号 的含义改变了注意:这里有 2 个常常被忽视、忽略、轻视的转义规则&…...

2023高质量设计竞赛汇总,想证明自己实力的快来

对于设计师来说,参加设计比赛不仅能够提升自己的设计能力,也是一条证明实力最好的捷径。小编也收集整理了不少近期设计大赛,分别标注了截止日期和官网等,宝子们记得码住收藏,赶紧SHOW起来!优酷X站酷 一千零…...

MongoDB与MySQL有区别吗?用一个表格跟你说明

MongoDB MySQL 数据库模型 非关系型 关系型 存储方式 虚拟内存持久化 不同引擎有不同存储方式 查询语句 独特MongoDB查询方式 传统SQL语句 架构特点 可通过副本集和分片实现高可用 常见有单点、M-S、MHA、MMM、Cluster等架构方式 数据处理方式 基于内存&#xf…...

ElasticSearch - 分布式文档索引、搜索、更新和删除文档的过程

文章目录1. 分布式文档存储1. 路由一个文档到一个分片中2. 主分片和副本分片如何交互3. 新建、索引和删除文档4. 取回一个文档5. 局部更新文档2. ElasticSearch相关问题1. 路由计算方式?2. 分片控制3. 分布式文档写入(索引)的过程?4. 分布式文档搜索的过…...

Python之re库用法细讲

文章目录前言一、使用 re 模块的前期准备工作二、使用 re 模块匹配字符串1. 使用 match() 方法进行匹配2. 使用 search() 方法进行匹配3. 使用 findall() 方法进行匹配三、使用 re 模块替换字符串四、使用 re 模块分割字符串总结前言 在之前的博客中我们学习了【正则表达式】的…...

MATLAB | 如何绘制github同款日历热力图

应粉丝要求,出一个类似于github热图的日历热力图,大概长这样: 依旧工具函数放在文末,如有bug请反馈并去gitee下载更新版。 使用教程 使用方式有以下几种会慢慢讲到: heatmapDT(Year,T,V)heatmapDT(Year,T,V,MonLim)h…...

认识适配器模式

适配器模式 一、定义 在不修改原来代码的情况下,适配器模式使接口不兼容的那些类可以一起工作。 二、适配器结构 1、Target(目标抽象类):目标抽象类定义客户所需的接口,可以是一个抽象类或者接口,也可以…...

JavaSe第6次笔记

1.不建议使用c语言的数组的表示方法。 2.二维数组表示方法 3.数组整体初始化时,只能在定义时初始化。 int[] array; array new int[]{1, 2}; 4. boolean类型数组,默认值是false,String类型数组,默认是null,其它是…...

单例设计模式

介绍 单例模式是一种创建型设计模式,其主要特点包括: 只有一个实例:单例模式确保系统中只有一个实例对象存在,所有对该对象的访问都是对同一个对象的引用全局访问:单例模式可以全局访问该实例对象,避免了多个对象之间的冲突和竞争延迟初始化:单例模式通常使用延迟初始化技术,…...

第七章 opengl之光照(基础光照)

OpenGL基础光照环境光照漫反射光照镜面光照基础光照 主要需要理解一个模型是冯氏光照模型,主要结构由3个分量组成:环境,漫反射,镜面光照。下面分别描述下这三个光照: 环境光照(Ambient Lighting):即使在黑…...

不考虑分配与合并情况下,GO实现GCMarkSweep(标记清除算法)

观前提醒 熟悉涉及到GC的最基本概念到底什么意思(《垃圾回收的算法与实现》)我用go实现(因为其他的都忘了,(╬◣д◢)ムキー!!) 源码地址(你的点赞,是我开源的…...

性能分析利器:火焰图

什么是火焰图 火焰图(FlameGraph)是是由 Linux 性能优化大师 Brendan Gregg 发明的。通过 perf 等工具分析得到结果,看起来就像是火焰,这也是它的名字的由来。火焰图以一个全局的视野来看待时间分布,它从底部往顶部&am…...

八股总结(三)操作系统内存管理、进程线程、进程同步与通信、中断与异常、常用命令

layout: post title: 八股总结(三)操作系统内存管理、进程线程、进程同步与通信、中断与异常、常用命令 description: 八股总结(三)操作系统内存管理、进程线程、进程同步与通信、中断与异常、常用命令 tag: 八股总结 文章目录操作…...

概率论小课堂:条件概率和贝叶斯公式(机器翻译的工作原理)

文章目录 引言I 条件概率1.1 条件概率的定义1.2 条件概率的计算II 贝叶斯公式2.1贝叶斯公式的本质2.2 机器翻译的原理引言 对于几乎所有的随机事件来讲,条件概率由于条件的存在,它通常不等于本身的概率。 贝叶斯公式的本质:在数学上条件和结果可以互换,通过这种互换,可以…...

流量与日志分析

文章目录1.流量与日志分析1.1系统日志分析1.1.1window系统日志与分析方法1.1.2linux 系统日志与分析方法1.2 web日志分析iis 日志分析方法apache日志分析**access_log****error_log**nginx日志分析tomcat 日志分析主流日志分析工具使用1.流量与日志分析 日志,是作为…...

英文论文写作常用例句整理汇总(持续更新)

ContentsGeneral introductionProblem definitionGaps in literatureProblems solutionStudy motivationAims & objectivesSignificance and advantages of your work参考资料General introduction Research on __ has a long tradition For decades, one of the most pop…...

[N0wayBack 练习题] My_enc,Euler,EasyLock,RRRRSA,EasyNumber,pwn

加入一个队,队里的练习题不少,还有WP真好My_enc原题from secret import flag import randomdef Cyber_key(LEN):Key [[] for i in range(row)]for x in range(row):for i in range(LEN):Key[x].append(random.randint(0, 2023))return Keydef Punk_enc(Key, msg):out []for l…...

网分线缆测试和dc-block

今天的好苹果和坏苹果 好苹果:是校准件和网分都是好的,又给了我一次复盘的机会 网分测试线缆: 1.网分直接复位,如果网分复位是校准状态,且解的是精密转接头,BNC的,可以不校准,结果差…...

Java创建线程的方式只有一种:Thread+Runnable

Java创建线程的方式其实只有一种👨‍🎓一、继承Thread👨‍🎓二、实现Runnable接口👨‍🎓三、实现Callable接口👨‍🎓四、通过线程池创建👨‍🎓五、总结一般我…...

数据加密--课后程序(Python程序开发案例教程-黑马程序员编著-第3章-课后作业)

实例6:数据加密 数据加密是保存数据的一种方法,它通过加密算法和密钥将数据从明文转换为密文。 假设当前开发的程序中需要对用户的密码进行加密处理,已知用户的密码均为6位数字,其加密规则如下: 获取每个数字的ASCI…...

【GO】K8s 管理系统项目33[前端部分–登录和登出]

K8s 管理系统项目[前端部分–登录和登出] 1. 登录登出流程 1.1 登录流程 登入流程总的分为5步: 账号密码验证token生成token验证验证成功进行跳转验证失败返回/login 1.2 登出流程 登出流程就相对简单,分为2步 删除Token跳转/login 2. 登录代码 src/views/login/Login.v…...

Vue 计算属性基础知识 监听属性watch

计算属性的概念 在{{}}模板中放入太多的逻辑会让模板内容过重且难以维护。例如以下代码&#xff1a; <div id"app">{{msg.split().reverse().join()}}</div><script>const vm new Vue({el: "#app",data: {msg:我想把vue学的细一点}})&…...

PAT:L1-004 计算摄氏温度、L1-005 考试座位号、L1-006 连续因子(C++)

目录 L1-004 计算摄氏温度 问题描述&#xff1a; 实现代码&#xff1a; L1-005 考试座位号 问题描述&#xff1a; 实现代码&#xff1a; 原理思路&#xff1a; L1-006 连续因子 问题描述&#xff1a; 实现代码&#xff1a; 原理思路&#xff1a; 过于简单的就不再写…...

Redis集群方案应该怎么做?

今天我们来跟大家唠一唠JAVA核心技术-RedisRedis是一款流行的内存数据库&#xff0c;适用于高性能的数据缓存和实时数据处理。当需要处理大量数据时&#xff0c;可以使用Redis集群来提高性能和可用性。Redis在单节点模式下&#xff0c;虽然可以支持高并发、快速读写、丰富的数据…...

连续点击返回键退出Android 应用

问题 业务需要&#xff0c;在主界面连续点击返回键退出应用&#xff0c;记录一下。 解决方案 先说结论&#xff0c;在主界面Activity中添加如下代码 /*** 记录上次点击返回键时间*/private long lastClickTime 0;/*** 两次回退点击时间间隔设置不小于2s*/public static fi…...

【PyTorch】教程:torch.nn.Hardswish

torch.nn.Hardswish 原型 CLASS torch.nn.Hardswish(inplaceFalse) 参数 inplace (bool) – 内部运算&#xff0c;默认为 False 定义 Hardswish(x){0if x≤−3,xif x≥3,x⋅(x3)/6otherwise\text{Hardswish}(x) \begin{cases} 0 & \text{if~} x \le -3, \\ x & \te…...

nacos源码入门

nacos官方文档地址&#xff1a;nacos官方文档 Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称&#xff0c;一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 简单来说&#xff0c;nacos就是一个注册中心、配置中心&#xff0…...

【记录】Samba|Windows 11的Samba连接切换用户

Samba是一个用于共享文件和打印机的网络协议&#xff0c;可以使不同的操作系统之间共享文件和资源变得容易。在Windows 11上&#xff0c;可以使用Samba来连接到网络共享。 如果您想在Windows 11上切换用户并连接到另一个Samba共享&#xff0c;可以按照以下步骤操作。 文章目录…...

vue hiprint vue使用hiprint打印控件VUE HiPrint HiPrint简单使用

vue hiprint vue使用hiprint打印控件VUE HiPrint HiPrint简单使用安装相关依赖安装Hi PrintJQuery引入依赖简单使用官方所有 打印示例安装相关依赖 安装Hi Print npm install vue-plugin-hiprintJQuery 因为 hi print 使用到了 JQuery 所以需要安装对应依赖 npm i jquery -…...

HBase常用Shell命令

HBase提供了一个非常方便的命令行交互工具HBase Shell。通过HBase Shell&#xff0c;HBase可以与MySQL命令行一样创建表、索引&#xff0c;也可以增加、删除和修改数据&#xff0c;同时集群的管理、状态查看等也可以通过HBase Shell实现。 一、数据定义语言 数据定义语言&…...

商城建站流程/设计网站logo

啦啦外卖41.7独立版最新外卖源码全开源 依旧是开源安装版&#xff0c;不是市面上的网站打包的垃圾版本。 包含完整vue源码 安装演示 版本验证 插件列表&#xff1a; vue源码 小程序新接口可以正确获取用户信息&#xff1a;...

沙田做网站/微商怎样让客源主动加你

CSS初学感觉很简单&#xff0c;但随着学习的深入才感觉CSS的水由多深&#xff0c;平常总会遇到各种坑&#xff0c;先总结一些经常遇到的坑 大小写不敏感 虽然我们平时在写CSS的时候都是用小写&#xff0c;但其实CSS并不是大小写敏感的 .test{background-COLOR:#a00;width:100px…...

电子商务网站建设的过程/2024年4月新冠疫情结束了吗

MyISAM 和 InnoDB 的基本区别 1.InnoDB不支持FULLTEXT类型的索引。 2.InnoDB 中不保存表的具体行数&#xff0c;也就是说&#xff0c;执行select count(*) from table时&#xff0c;InnoDB要扫描一遍整个表来计算有多少行&#xff0c;但是MyISAM只要简单的读出保存好的行数即可…...

免费英文网站建设/网络营销与直播电商专升本

把数组排成最小的数(三十二) 题目描述 输入一个正整数数组&#xff0c;把数组里所有数字拼接起来排成一个数&#xff0c;打印能拼接出的所有数字中最小的一个。例如输入数组{3&#xff0c;32&#xff0c;321}&#xff0c;则打印出这三个数字能排成的最小数字为321323。 代码…...

网站构建/营销型网站的分类不包含

作为开发人员&#xff0c;每个人都会遇到有关在生产服务器上启用GC日志的问题。 建议在生产服务器上启用GC登录吗&#xff1f; 是的&#xff0c;建议在生产服务器上启用GC登录 。 通过在JVM上启用GC登录的开销很小。 根据标准性能评估公司&#xff08;SPEC&#xff09; &#x…...

怎么做网赌网站/网络营销的方式和方法

前言 Javascript是一门基于对象的动态语言&#xff0c;也就是说&#xff0c;所有东西都是对象&#xff0c;一个很典型的例子就是函数也被视为普通的对象。Javascript可以通过一定的设计模式来实现面向对象的编程&#xff0c;其中this “指针”就是实现面向对象的一个很重…...