昆明网站建设优化,网站建设未完成,展示型网站和官网,wordpress 分类目录自定义转义字符-escape character character 表示字符#xff0c;包含两层含义#xff0c; 1.字母 2.符号 转义#xff1a; 改变含义
字符#xff1a; 字母、符号
转义字符#xff1a; 把 字母、符号 的含义改变了注意#xff1a;这里有 2 个常常被忽视、忽略、轻视的转义规则包含两层含义 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