首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Emacs - Lisp中的正则表达式需要双重转义 - 为什么?

在Emacs中,正则表达式需要双重转义,因为Emacs使用了两层解释。第一层是Lisp解释器,它解释了Lisp代码并执行它。第二层是Emacs解释器,它解释了Emacs命令并执行它们。因此,在Emacs中使用正则表达式时,需要将正则表达式转义两次,以便它能够正确地传递给Emacs解释器。

例如,如果你想要匹配一个点(.),在正则表达式中,你需要使用\.来表示。但是,在Lisp中,\字符也是一个转义字符,因此需要使用\\来表示一个单独的\字符。因此,在Emacs中,你需要使用\\.来匹配一个点(.)。

总之,Emacs中的正则表达式需要双重转义,因为它使用了两层解释,这需要将正则表达式转义两次才能正确地传递给Emacs解释器。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

正则表达式需要转义特殊字符

正则表达式中有些字符具有特殊含义,如果在匹配要用到它本来含义,需要进行转义(在其前面加一个\)。 下面总结了常见一些需要转义特殊字符: 匹配输入字符串结尾位置。...如果设置了RegExp对象Multiline属性,则 也匹配,如‘\n’或’\r’。 () 标记一个子表达式开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符。...匹配除换行符\n之外任何单字符。 [] 标记一个括号表达式开始。 ? 匹配前面子表达式零次或一次,或指明一个非贪婪限定符 \ 将下一个字符标记为或特殊字符或原意字符或后向引用或八进制转义符。...序列‘\\’匹配’\’ ^ 匹配输入字符串开始位置,除非在方括号表达式中使用,此时他表示不接受该字符集合。 {} 标记限定符表达式开始。 | 指明两项之间一个选择。 总述一下:* . ? +

4.1K20
  • Linux Shell 需要转义字符

    本文整理 Linux Shell 转义字符。 在 Linux Shell ,有很多字符是有特殊含义,如果期望把这个字符当作普通字符来处理,需要经过 \ 转义。...即便在引号也依然被 Shell 解释特殊字符 " $ ` \ 双引号 ‘"’ 双引号作用是避免空格将本来属于同一段参数字符串分割成两部分。那么如果真的需要双引号的话就需要使用 \ 来转义。...反引号 ` 跟引号一样作用。 在引号需要转义。 美元符 \$ 在 Linux Shell ,这是变量引用。例如 ${x} 就是引用 x 变量。...1 2 $ echo "上一个程序返回值为:\$? = $?" 上一个程序返回值为:$? = 127 在引号需要转义。 反斜杠 \ 因为 \ 是转义字符,所以其本身使用也必然需要转义。...在引号需要转义。 任意字符 任意字符也可以使用 \ 转义,虽然没用,但也是一个特性。

    1.4K10

    正则需要转义特殊字符

    正则表达式中有一些特殊字符需要转义,收集整理如下: 特殊字符         说明 $ 匹配输入字符串结尾位置。...如果设置了 RegExp 对象 Multiline 属性,则 $ 也匹配 ‘\n' 或 ‘\r'。要匹配 $ 字符本身,请使用 \$。 ( ) 标记一个子表达式开始和结束位置。...匹配除换行符 \n之外任何单字符。要匹配 .,请使用 \. [ ] 标记一个括号表达式开始。要匹配 [,请使用 \[。 ? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? ...\ 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, ‘n' 匹配字符‘n'。'\n' 匹配换行符。序列 ‘\\' 匹配 “\”,而 ‘\(' 则匹配 “(”。...| 指明两项之间一个选择。要匹配 |,请使用 \|。

    4K20

    通过函数调用进行字符串替换

    Emacs ,有如下几种文本替换函数: • replace-string 字面量替换 • replace-regexp[1] 正则表达式替换 静态替换是最常见,比如将 foobar 替换成 FOObar...) 需要注意一点时,在写 Lisp 代码时,转义字符需要有两个反斜线,比如 [0-9]\\{3,\\} ,这时因为: 反斜线不仅在 regexp 是特殊字符,在 lisp 这门语言中,也是特殊字符。...比如,在 Lisp 需要用 "\\" 表示一个反斜线字面量,如果直接写 [0-9]\{3,\} 那么在经过 lisp parser 后, 得到是 [0-9]{3} ,而这个正则并不是说匹配一个数字三次...这是在 Lisp 写正则比较容易出错一点,Manual 相关资料: • Syntax for Strings (GNU Emacs Lisp Reference Manual)[2] • Regexps...(GNU Emacs Manual)[3] • Regexp Backslash (GNU Emacs Manual)[4] 最后,比如有如下文本,需要把其中 unix 时间戳替换为可读时间,lisp

    6910

    Emacs 折腾记

    我工作倒并没有用得到 Lisp 地方,但是最近眼前晃过一些书,比如《计算机程序构造和解释》、《码农》杂志第 13 期,都对这门古老语言推崇备至,历数现代 Lisp 方言先进性,再者我也一直有学习一门函数式编程语言想法...在搜索网友们对此经验之谈时候,自然而然地,目光逐渐聚集到 Emacs 这个使用 Emacs Lisp 作为扩展语言编辑器上。...目录 TOC {:toc} 文本编辑环境——Evil 从 Vim 转到 Emacs 最大不适应就是以前那些用得飞起编辑模式和简洁熟悉快捷键不好使了,需要切换到频繁 Ctrl+ Alt+ 各种组合键去...,以前就听说过有 Evil 这么个东西,试了一下发现这货还真是强大,常用编辑模式、快捷键、命令,甚至宏和正则表达式等等操作都模拟得很好,跟在 gVim 里感觉一模一样,平移编辑习惯坡度一下没了。...在 ~/.emacs 文件添加 这个 3 表示在距离屏幕上下边缘还有 3 行时候再移动光标即自动滚屏,方便随时能看到当前编辑行上下文,可以根据自己使用习惯调整。

    1.3K20

    Emacs 折腾记

    我工作倒并没有用得到 Lisp 地方,但是最近眼前晃过一些书,比如《计算机程序构造和解释》、《码农》杂志第 13 期,都对这门古老语言推崇备至,还有垠神也撰文《Lisp 已死,Lisp 万岁!...在搜索网友们对此经验之谈时候,自然而然地,目光逐渐聚集到 Emacs 这个使用 Emacs Lisp 作为扩展语言编辑器上。...文本编辑环境——Evil 从 Vim 转到 Emacs 最大不适应就是以前那些用得飞起编辑模式和简洁熟悉快捷键不好使了,需要切换到频繁 Ctrl+ Alt+ 各种组合键去,以前就听说过有 Evil...这么个东西,试了一下发现这货还真是强大,常用编辑模式、快捷键、命令,甚至宏和正则表达式等等操作都模拟得很好,跟在 gVim 里感觉一模一样,平移编辑习惯坡度一下没了。...Common Lisp 开发环境 学习 Common Lisp 是使用 Emacs 最主要任务,配好了文本编辑,当然得先把 Common Lisp 开发环境配置好了。

    1.9K10

    Emacs 之光成长历程

    更令人好奇是,嘉宾如何在短期内熟悉 Emacs 源码并为之贡献多个 patch,相信通过嘉宾学习、贡献经历,可以给听众打开 Emacs 源码神秘面纱,让更多用户参与到 Emacs 贡献,一个多小时分享...[5] • 对 Emacs 仓库提交记录[6] • 28 版本新增 shortdoc[7],解决手册冗长,提供简洁示例代码 •正则表达式两处文档: • 只介绍如何写正则 34.3 Regular...,句号后两个空格 • 注释用是 C 风格 /* */ ,而不是 C++ // • 函数名后面跟一个空格,再是括号 •读 Emacs 源码技巧 • lisp.h[12] 里面有 C 如何调用 ELisp...buffer: https://github.com/emacs-mirror/emacs/commit/7c83e605ab84e8b62254c55f347abc8aa9c6057b [12] lisp.h...: https://github.com/emacs-mirror/emacs/blob/master/src/lisp.h [13] devel: https://lists.gnu.org/archive

    40610

    30岁文转码:我用了三年时间从哲学家变成知名软件项目核心开发

    成为 Emacs 铁粉 这里我想聊聊自己为什么会成为 Emacs 铁粉。种种高级功能和丰富软件包当然很好,但这还不足以体现 Emacs 精髓、特别是它真正价值主张。...它其实是一套可编程平台,文本编辑只是其中主要交互点之一。 Emacs 是由 Lisp 一种方言编写而成,名为“Emacs Lisp”、也叫“Elisp”。...Dired 可以逐个标记条目,也可以使用正则表达式和其他高级命令。 记录一组以 Dired 为起点操作(「键盘宏」),跳转至特定文件,执行某些变更、返回文件管理器,再在下一个文件重复这个过程。...所以我用其实是 Emacs 当中极简化“专注模式”,这种模式在演示、阅读、写作和编程等场景中都有很好表现。 而且我在 Emacs 所有操作都只需要实现一次。...用户很难理解这款程序内部运作逻辑、自然看不懂它为什么会给出最终结果。结合个人经验,我觉得这就是典型名义自由——只存在于许可条款当中、在实际体验完全不见踪影“自由”,绝对不是真正自由。

    38030

    一名ClojurianEmacs配置

    新事物对程序员具有极大吸引力,但是程序员不会止步于使用新事物,而且会在惊奇之余,渴望控制那股背后主导它力量本身,行使“上帝之力”。 话说回来,为什么我会从vim党摇身一变成为emacs党呢?...另外,为了更好地在emacs编写Clojure,还需要cider-mode和clojure-mode支持,这时候就不得不编辑init.el文件,本着KISS (keep it simple, stupid...接下来,只需要使用c-h v和c-h f查看elisp定义变量函数就能很快上手自行配置。...模块化 如果把什么东西都揉到init.el文件,这个文件一定会很快变得臃肿不堪。为了解决这个问题,需要引入模块化思想——把特定功能配置放到独立文件,然后require进来。...(add-to-list 'load-path (expand-file-name "lisp" user-emacs-directory)) 看似,接下来就可以在每个独立模块文件编写各种功能配置

    2.8K20

    Clojure 开发那些事

    其实也好理解,Lisp 语言诞生这么久了,为什么一直那么小众?原因就在于 Lisp 语言过于强大,不必也不可能像 Java 那么普及。你能要求每个人都能为 CTO 吗?...这一点非常重要,估计也是为什么 Clojure 较其他 Lisp 方言更流行原因。...使用比较简单,通过 Intellj 插件管理器安装后即可使用,第一次使用时需要设置下快捷键类型 Emacs + Cider 作为一门 Lisp 方言,怎么能没有一个好 Emacs mode 呢?...Emacs + Cider 组合相比 Intellj + Cursive 最大优势就是对宏支持,Cider 提供了对宏展开快捷键,但在 Cursive 我没找到,不过宏也是比较高级功能,初学者应用用不到...nrepl Clojure REPL 可以连接到远程服务器上进程,直接对进程函数或变量进行修改,这是非常便利,对于很多运行时错误可以采用这种方式解决,Emacs 与 Intellj 里面都提供了连接远程

    1.6K20

    一日一技:批量转义正则表达式特殊符号

    我们发现最近出现了一批神秘聊天消息,这些消息特征为: 表情符号微信号好玩 例如: (^_^)加wei辛8五⑦久久二爸好玩~_>我Q扣八七3玖二流好玩 这些聊天记录总是以表情符号开头,以 好玩结尾。...为了屏蔽这些诈骗信息,我们想到使用正则表达式。...但在实际使用过程,我们发现颜文字里面有非常多小括号、括号、大括号、星号、点号、问号之类符号,这些符号在正则表达式里面有特殊用途,如果直接评价成一个pattern,就会导致正则表达式匹配出问题。...在Python里面,正则表达式模块已经帮我们实现了这个功能—— re.escape。 re.escape可以把传给他们字符串里面,所有有特殊意义符号前面加上反斜杠,但又不影响正常字符。...特别注意:在Python 3.6或之前版本,除了Ascii字符之外其他字符都会被加上反斜杠。 从Python 3.7开始,只有在正则表达式里面有特殊意义符号才会被加上反斜杠。

    1.6K30

    与宇宙学博士后聊 Emacs

    说起物理学,在我们一般人看来是个很遥远事情,和日常生活关系不大,更何况是千亿光年外宇宙呢。嘉宾为什么选择了这条方向?研究宇宙学意义在哪里?...image.png 时间线 •00:00:49 嘉宾自我介绍 •00:01:24 Emacs 初印象 •00:06:20 为什么喜欢 Lisp •00:12:04 Emacs 除了写代码外主要用途...•00:19:50 Emacs 在大学老师使用情况 •00:26:06 嘉宾学习物理学历程 •00:28:18 宇宙学对现实生活意义 •00:32:09 宇宙学研究方式 •00:38:32 宇宙学对嘉宾影响...•00:39:33 为什么我们还没有找到地外文明 •00:44:39 宇宙背景辐射是均匀意义 •00:49:04 读博期间有意思事 •00:52:27 推荐环节 Show Notes •嘉宾自我介绍...[1] •使用 Emacs 登录超级计算中心来进行代码编写与调试 •吸引嘉宾喜欢 Lisp 文章:How To Become A Hacker[2] •用 Lisp 方式写 Python 库:HPy

    41510

    使用 RustC 开发 Emacs 插件

    "defalias"), 2, args); } 在 emacs_module_init 调用 define_elisp_function 即可将 c-add 导出到 ELisp ,使用示例: (c-add...(c-add ARG1 &rest REST) C-based adder 上面的示例代码虽然功能简单,但是把开发『动态模块』所需功能都介绍到了,如果需要更复杂功能,可以参考文档: •Writing...Dynamically-Loaded Modules •Emacs modules | Philipp’s documents 简化方法调用 从上面介绍示例可看出,基本所有函数都需要 env 这个参数...ret); 热加载 在开发过程,最重要是热加载,不能每次重启服务来让新代码生效,但是这里通过 module-load 加载动态模块,是无法卸载,只能重启 Emacs 解决,这不是很友好,可以通过一种变通方式来实现...for Emacs Lisp

    85520

    Emacs Tree-sitter 初体验

    Emacs ,之前都是采用正则方式去解析语言语法结构,这种方式虽然大多数情况是没有问题,但主要有以下几个问题: 正则比较消耗 CPU,导致对大文件进行高亮时容易导致 Emacs 卡主,参见:...Regexp Problems (GNU Emacs Lisp Reference Manual)[2] 对于有些语法结构,正则并不能很好工作,参见:The true power of regular...安装步骤 由于 tree-sitter 核心部分使用 C 编写,因此 Emacs 默认并不链接它,需要用户自己制定, ....但到这里安装并没有完成,这只是完成了核心部分,不同语言解析器需要单独安装,不过幸好社区内已经有人整理好了, https://github.com/emacs-tree-sitter/tree-sitter-langs...,需要开启 Emacs 对应 mode 来使用,比如 c-mode 对应 c-ts-mode ,Emacs 为不同语言重新实现了一个以 ts-mode 结尾新 mode,在 29 版本,主要有如下

    1.3K10

    视频为什么需要这么多颜色空间?

    我们经常会用到不同色彩空间:非线性 RGB、线性 RGB、YUV、XYZ……为什么需要这么多色彩空间呢?...为什么在FFmpeg中会有 color_space,color_transfer,color_primaries 等一系列颜色属性呢?这些术语之间究竟隐藏着什么秘密?...[15] 色彩转换需要在某个线性空间下进行操作,并且操作过程需要保持设备独立性。因此,不同 RGB 色域空间是不能直接进行转换需要一个设备无关、线性颜色模型作为中转才能实现其转换。...[17]根据colorspace实现可知,在 FFmpeg ,BT.601->BT.709转换过程如下所示: 在如上变换,涉及到3个颜色空间转换,分别是: YUV 和 RGB 之间转换...但是该滤镜获取色调、饱和度和 HSL 计算 [30]是不一致

    96150

    亚马逊工程师论各种编程语言优缺点

    译者注)是如何工作模型。你不需要懂很多 Lisp,真的。紧咬 Scheme 就哦了,因为它是最简单最干净。其他 Lisp 已经发展成了很大,很复杂(很好很强大?...他们当时没有足够多 Emacs-Lisp 的人。...这是一种需要一段时间去好好体会一种震撼性世界观转变。这有点像突然你被配了一个执行助理。你知道老总们为什么总是好像有时间去开会,总是知道公司现在运行情况,总是写出很酷酷文档吗?...有一个执行助理把你从琐事解救出来让你有时间去思考那些真的需要你去解决问题; 没有的话你将不得不花一半时间在那些无聊世俗事情上。...如果你认为我这个观点僵硬不灵活家伙是多态教义很好反例的话,我倒是可以给你举几个为什么需要多态继承好例子,或者至少像 Ruby 那样 mixin 或者自动派遣。下次问问我白龙马事情。

    2.2K80

    几种编程语言优缺点

    其次,这是一项进行工程,现在只是东打一耙西搞一下,还没有精加工过。又一个把它写到博客里很大理由。不需要很好,或很完整。就是我今天想说一些话。请随便!...他们当时没有足够多 Emacs-Lisp 的人。...这是一种需要一段时间去好好体会一种震撼性世界观转变。这有点像突然你被配了一个执行助理。你知道老总们为什么总是好像有时间去开会,总是知道公司现在运行情况,总是写出很酷酷文档吗?...有一个执行助理把你从琐事解救出来让你有时间去思考那些真的需要你去解决问题; 没有的话你将不得不花一半时间在那些无聊世俗事情上。...如果你认为我这个观点僵硬不灵活家伙是多态教义很好反例的话,我倒是可以给你举几个为什么需要多态继承好例子,或者至少像 Ruby 那样 mixin 或者自动派遣。下次问问我白龙马事情。

    3.4K110

    Emacs Lisp

    LISP 编程语族已经演变出许多种方言,现代最著名通用编程语种是 Common Lisp 和 Scheme , 以上解释来自 WIKI Emacs LispLisp 一个分支 Emacs Lisp...,一种直译式脚本语言,为LISP方言之一,GNU Emacs与XEmacs文字编辑器都使用这个编程语言来扩展它们功能,它直译器是以C语言来实作,它受到Maclisp影响很大,但是跟Common...; 第一步首先启动Emacs: (在windows可以双击emacs图标,在Linux可以输入% emacs & ), ;; 然后在键盘上键入q 跳过系统欢迎信息, ;; 先观察在Emacs屏幕底部...;; 缓冲区也叫做工作区,在Emacs打开一个文件,实际只是在Emacs构造该文件一个副本,放到缓冲区, ;; 在Emacs对该文件编辑也是针对该副本编辑,唯有保存改动时,Emacs才会把缓冲区内容在复制到原文件中去...;; 为了实验本教程lisp命令,我们要让Emacs工作在lisp-interaction-mode工作模式下, ;; 这个模式可以让我们在缓冲区中和Emacs进行互动,并且直接执行Lisp命令,得到结果

    2.3K40
    领券