转义字符-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

说说转义字符 “\”相关推荐

  1. C语言格式控制符和转义字符

    1.         格式控制符 格式输出printf 作用是向终端输出若干个类型任意的数据. 格式:printf (格式控制符,输出列表) 1)         格式控制符 l          % ...

  2. c语言中的普通字符包括什么,【判断题】C语言中的字符常量通常有两种形式:普通字符和转义字符。...

    [判断题]C语言中的字符常量通常有两种形式:普通字符和转义字符. 更多相关问题 ---Can you speak French?---Yes, but only____.A.a littleB.lit ...

  3. 【廖雪峰python入门笔记】字符串_转义字符的使用

    转义字符的使用 字符串可以用''或者""括起来表示. 如果字符串本身包含'怎么办?比如我们要表示字符串 I'm OK ,这时,可以用" "括起来表示: &quo ...

  4. Oracle的括号转义字符,SQL中通配符、转义符与括号的使用

    一.搜索通配符字符的说明 可以搜索通配符字符.有两种方法可指定平常用作通配符的字符: 使用 ESCAPE 关键字定义转义符.在模式中,当转义符置于通配符之前时,该通配符就解释为普通字符.例如,要搜索在 ...

  5. GitHub 博客-- Jekyll--代码高亮,Liquid 转义字符

    此文首发于我的个人博客:GitHub 博客-- Jekyll–代码高亮,Liquid 转义字符 - zhang0peter的个人博客 转载请注明 在使用Jekyll搭建了自己的 GitHub博客后,想 ...

  6. java转义字符_Java入门 - 语言基础 - 13.Character类

    1.概述 Character 类用于对单个字符进行操作. Character 类在对象中包装一个基本类型 char 的值 实例 char ch = 'a'; // Unicode 字符表示形式char ...

  7. 【c语言】转义字符的使用

    <程序设计基础-c语言>杨莉 刘鸿翔 科学出版社 ISBN 978-7-03-032903-5 p30 [例2.4] 转义字符的使用 **打印机输出: fab_c___gde h_____ ...

  8. db2中的几个转义字符

    在like谓词查询中,会使用到两个通配符:"%"和"_".,其中"%"表示零个或任意多个字符,"_"表示任意一个字符,但 ...

  9. 2017-2-19 C#基础 基本数据类型的转换,转义字符,常量

    1.基本数据类型的转换分两种:自动转换(隐式转换)和强制转换(显式转换).自动转换是从只类型转换到引用类型.强制转换是最长用的,是从引用类型转换到值类型或者从浮点型转换到整形.强制转换主要有三种形式: ...

  10. 【Android】html转义字符

    1.首先列下一些基本的html转义字符 特殊字符 字符 十进制 转义字符 " " " & & & < < < > > ...

最新文章

  1. Android Studio之查找当前类的位置图标没了
  2. java中跨时区的日期格式转换
  3. 台积电股价涨势如虹,将带领台股挑战历史新高!
  4. 一加7 Pro将首发搭载UFS 3.0闪存:较UFS2.1闪存提升明显
  5. 基于Ubuntu12.04下的Keystone源码安装
  6. 类与对象 - PHP手册笔记
  7. H5 FileReader对象
  8. 中美晶结盟华为 推动逆变器商机
  9. windows下CRF++的安装与使用
  10. utf8_general_ci、utf8_unicode_ci和utf8_bin的区别
  11. Visual Studio各组件说明
  12. java模块化实践(基于jdk11)-1
  13. C#将PDF转为多种图像文件格式的方法(Png/Bmp/Emf/Tiff)
  14. canvas 的绘图模式 retained-mode(保存模式) 和 immediate-mode (立即模式)
  15. 什么是数据库?数据库有什么作用?
  16. 天龙八部服务器维护几点开服,天龙八部开服时间表2020-开服时间表一览
  17. 目标检测中的Anchor-free回顾
  18. jQuery手风琴特效
  19. 意图识别各种模型比较
  20. 著名的斐波拉契数列(Fibonacci),除第一个和第二个数外,任意一个数都可由前两个数相加得到: 1, 1, 2, 3, 5, 8, 13, 21, 34, ...

热门文章

  1. selenium接管浏览器并配置代理
  2. [Oracle 11g r2(11.2.0.4.0)]集群守护进程CSS资源管理
  3. Java聊天室——实现多人聊天、私聊、群聊
  4. MySQL sum()函数
  5. 1055: 猴子吃桃
  6. 浏览器缓存知识+JS实现缓存
  7. 基于Arduino IDE开发的LD3320语音识别模块
  8. php5 date(‘Y-m-d‘,2256946591) 显示1905 php7正常
  9. 有4个圆塔、圆心分别为(2,2)、(-2,2)、(-2,-2)、(2,-2),圆半径为1,见图4.5。这4个塔的高度为10m,塔以外无建筑物。今输入任一点的坐标,求该点的建筑高度(塔外的高度为零)
  10. 3个直播间直播未经审批的游戏,斗鱼遭罚款1万元