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

Emacs Lisp:以紧凑的方式匹配重复的模式?

Emacs Lisp是一种编程语言,它是GNU Emacs编辑器的扩展语言。它是一种方便、灵活且强大的语言,用于自定义和扩展Emacs编辑器的功能。

在Emacs Lisp中,可以使用紧凑的方式匹配重复的模式。这可以通过使用正则表达式和相关的函数来实现。以下是一个示例:

代码语言:lisp
复制
;; 定义一个字符串
(setq str "Hello, world! This is a test.")

;; 使用正则表达式匹配重复的模式
(if (string-match "\\(\\w+\\), \\(\\w+\\)!" str)
    (message "匹配成功!")
  (message "匹配失败!"))

;; 提取匹配的结果
(match-string 1 str) ; 返回 "Hello"
(match-string 2 str) ; 返回 "world"

在上面的示例中,我们使用了正则表达式 "\(\w+\), \(\w+\)!" 来匹配字符串中以逗号和感叹号分隔的两个单词。如果匹配成功,则输出"匹配成功!",否则输出"匹配失败!"。然后,我们可以使用match-string函数来提取匹配的结果,其中参数1和参数2分别表示第一个和第二个匹配的子字符串。

Emacs Lisp的紧凑的方式匹配重复的模式可以用于各种场景,例如文本处理、语法解析、代码转换等。对于Emacs用户来说,掌握Emacs Lisp的正则表达式和相关函数,可以更好地定制和扩展他们的编辑器。

腾讯云提供了云服务器(CVM)产品,可以满足用户在云计算领域的需求。您可以通过以下链接了解更多关于腾讯云云服务器的信息:腾讯云云服务器

请注意,本回答仅供参考,具体的技术选型和产品选择应根据实际需求进行评估和决策。

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

相关·内容

两种模式匹配方式(BFKMP算法)

前言 串,又称作字符串,它是由0个或者多个字符所组成有限序列,串同样可以采用顺序存储和链式存储两种方式进行存储,在主串中查找定位子串问题(模式匹配)是串中最重要操作之一,而不同算法实现有着不同效率...,我们今天就来对比学习串两种模式匹配方式: 朴素模式匹配算法(Brute-Force算法,简称BF算法) KMP模式匹配算法 朴素模式匹配算法(BF算法) BF算法是模式匹配一种常规算法,它思想就是...下面的KMP模式匹配算法就很好解决了这一问题 KMP模式匹配算法 如果仅仅进行一些少量数据运算,可能你甚至觉得BF算法也还行,起码是很容易写出来,毕竟能跑就是好程序,但是一旦数据量增大,你就会发现有一些...“无用功” 真的会大大拖慢你速度 KMP模式配算法是由 D.E.Knuth,J.H.Morris,V.R.Pratt 三位前辈提出,它是一种对朴素模式匹配算法改进,核心就是利用匹配失败后信息...有一种特殊情况出现,使得我们不得不考虑KMP算法改进 那就是子串中有多个连续重复元素,例如主串 S=“aaabcde” 子串T=“aaaaax” 在主串指针不动,移动子串指针比较这些值,其实有很多无用功

56230

Redis存储Key一种设计实现方式模式匹配

下边,和大家一起学习一种较为简单模式匹配方式Key值设计方法。...三、Key值设计 上述,大致看了依托项目结构,还没有开始Redis Key值得设计,因此可以跳过,下边主要学习一下,如何设计一种Key实现模式匹配查询方式。...只是在于点一下这种最常见数据库加索引方式)。 ? 数据库做了索引,那我,我们将数据存储到Redis中时候,如何在把他取出来那? (2)首先,看一下最终存放在Redis中数据格式: ?...四、总结 拼接Key方式很简单,常用查询条件属性作为拼接Key依据,当然还可以通过其他方式,但最主要是如何去实践。...上述,很简略介绍了一下,因为对于这个项目来说,很多细节,博客形式写出来确实受限,还请大家移步代码仓库地址: https://git.oschina.net/xuliugen/redis-demo.git

1.8K30
  • Emacs 折腾记

    在搜索网友们对此经验之谈时候,自然而然地,目光逐渐聚集到 Emacs 这个使用 Emacs Lisp 作为扩展语言编辑器上。...目录 TOC {:toc} 文本编辑环境——Evil 从 Vim 转到 Emacs 最大不适应就是以前那些用得飞起编辑模式和简洁熟悉快捷键不好使了,需要切换到频繁 Ctrl+ Alt+ 各种组合键去...在 ~/.emacs 文件里加上: 这样就能在大部分地方(除了 eshell 等外)默认进入 Evil 模式使用 Vim 编辑习惯了。...C/S 模式快速启动 Emacs Emacs 启动速度是相比 Vim 来说被诟病吐槽得很多一个点,我们在 Windows 下可以利用 C/S 模式来实现 Emacs 快速打开文件。...varible ALTERNATE_EDITOR) 平滑滚动 Emacs 默认滚动方式和 Vim 不一样,是光标移到屏幕上或者下边缘时突然跳动半屏,比较不符合我目光跟着光标走习惯,这个可以使用一个插件来解决

    1.3K20

    Emacs Lisp

    LISP 编程语族已经演变出许多种方言,现代最著名通用编程语种是 Common Lisp 和 Scheme , 以上解释来自 WIKI Emacs LispLisp 一个分支 Emacs Lisp...;; ;; ;; 如何切换Emacs工作模式 ;; Emacs有各种各样功能各异模式,工作模式含义其实就是Emacs对当前文本编辑工作 ;; 更加敏感,比如高亮和缩进,并且支持一些特殊命令...;; 为了实验本教程中lisp命令,我们要让Emacs工作在lisp-interaction-mode工作模式下, ;; 这个模式可以让我们在缓冲区中和Emacs进行互动,并且直接执行Lisp命令,得到结果...nil t) (add-text-properties (match-beginning 1) ;返回匹配模式中,最先匹配位置 (match-end 1) ;返回最后匹配位置 (list 'face...,在我按下 Ctrl-c Ctrl-` 时候,会自动输出一个 markdown 代码框,然后将光标定位到要输入代码位置 ---- 总结 Lisp 真的很简洁优雅 只是括号看起来有点怪 它提供了编程另一种思维方式

    2.3K40

    Emacs Lisp2

    ;;;; ;; 如何切换Emacs工作模式 ;; Emacs有各种各样功能各异模式,工作模式含义其实就是Emacs对当前文本编辑工作;; 更加敏感,比如高亮和缩进,并且支持一些特殊命令。...;; 为了实验本教程中lisp命令,我们要让Emacs工作在lisp-interaction-mode工作模式下,;; 这个模式可以让我们在缓冲区中和Emacs进行互动,并且直接执行Lisp命令,得到结果...2 2);; Elisp中表达式可以通过括号来嵌套(+ 2 (+ 1 1));; 在lisp-interaction-mode模式中,我们可以直接计算一个表达式,计算方法是(+ 3 (+ 1 2));...nil t)(add-text-properties (match-beginning 1) ;返回匹配模式中,最先匹配位置(match-end 1) ;返回最后匹配位置(list 'face 'bold...,在我按下 Ctrl-c Ctrl-` 时候,会自动输出一个 markdown 代码框,然后将光标定位到要输入代码位置----总结Lisp 真的很简洁优雅只是括号看起来有点怪它提供了编程另一种思维方式很值得花时间了解一下

    98240

    Emacs 折腾记

    在搜索网友们对此经验之谈时候,自然而然地,目光逐渐聚集到 Emacs 这个使用 Emacs Lisp 作为扩展语言编辑器上。...文本编辑环境——Evil 从 Vim 转到 Emacs 最大不适应就是以前那些用得飞起编辑模式和简洁熟悉快捷键不好使了,需要切换到频繁 Ctrl+ Alt+ 各种组合键去,以前就听说过有 Evil...自动显示匹配文件名。 不用输入全路径,输入文件名能自动定位到文件。 切换 Buffer 终于可视化了。 …… 使用 smex 自动提示 M-x 后内容。...C/S 模式快速启动 Emacs Emacs 启动速度是相比 Vim 来说被诟病吐槽得很多一个点,我们在 Windows 下可以利用 C/S 模式来实现 Emacs 快速打开文件。...For use with Internet Explorer 平滑滚动 Emacs 默认滚动方式和 Vim 不一样,是光标移到屏幕上或者下边缘时突然跳动半屏,比较不符合我目光跟着光标走习惯,这个可以使用一个插件来解决

    1.9K10

    Emacs Lisp

    LISP 编程语族已经演变出许多种方言,现代最著名通用编程语种是 Common Lisp 和 Scheme , 以上解释来自 WIKI Emacs LispLisp 一个分支 Emacs Lisp...;; ;; ;; 如何切换Emacs工作模式 ;; Emacs有各种各样功能各异模式,工作模式含义其实就是Emacs对当前文本编辑工作 ;; 更加敏感,比如高亮和缩进,并且支持一些特殊命令...;; 为了实验本教程中lisp命令,我们要让Emacs工作在lisp-interaction-mode工作模式下, ;; 这个模式可以让我们在缓冲区中和Emacs进行互动,并且直接执行Lisp命令,得到结果...nil t) (add-text-properties (match-beginning 1) ;返回匹配模式中,最先匹配位置 (match-end 1) ;返回最后匹配位置 (list 'face...,在我按下 Ctrl-c Ctrl-` 时候,会自动输出一个 markdown 代码框,然后将光标定位到要输入代码位置 ---- 总结 Lisp 真的很简洁优雅 只是括号看起来有点怪 它提供了编程另一种思维方式

    2.2K30

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

    它其实是一套可编程平台,文本编辑只是其中主要交互点之一。 Emacs 是由 Lisp 一种方言编写而成,名为“Emacs Lisp”、也叫“Elisp”。...在评估 Elisp 时,Emacs 环境可以轻松使用与之对应返回值。无需重新启动程序,这些扩展就能实时生效,帮助用户交互方式即刻观察效果。...Emacs 之所以吸引我,是因为 Lisp 机表现出了巨大潜力。我想要是一种不同于以往日常计算工具集成开发层,我希望拥有统一主题、精确排版、相通操作 / 交互模式。...记录一组 Dired 为起点操作(「键盘宏」),跳转至特定文件,执行某些变更、返回文件管理器,再在下一个文件中重复这个过程。 在以上各种用例中,用户完全不需要学习任何新知识。...所以我用其实是 Emacs 当中极简化“专注模式”,这种模式在演示、阅读、写作和编程等场景中都有很好表现。 而且我在 Emacs所有操作都只需要实现一次。

    38030

    Emacs 28 新特性介绍

    与 flush-lines 命令类似,但是匹配行会作为整体加到 kill ring 中 • 新配置 kill-transform-function 字符在添加到 kill ring 中预处理函数 •...比如 11:00pm • 新配置 browse-url-default-handlers 根据 url 来定制不同打开方式 • mode-line 会展示 Elisp 作用域方式 mode-line...• project 更新了一堆实用命令,后面会单独写一篇文章介绍 28 中 project 使用方式。...positional 参数已经被淘汰 编译方式 看了上面那么多新功能,读者可能已经按捺不住内心喜悦,这里就来介绍如何在 macOS 中编译 28 版本,其他操作系统方式类似。.../hierarchy.el [12] shorthands.el: https://github.com/emacs-mirror/emacs/blob/emacs-28/lisp/emacs-lisp

    96830

    一名ClojurianEmacs配置

    这就不得不提起Clojure这门lisp方言,出于对lisp和函数式编程痴迷,我选择了基于JVMClojure作为自己偏好语言,而emacs天生为lisp而生。...这种时候,我心中就蹦跶出一句话“世界上本没有矛盾,如果出现了,检查你都有哪些前提条件,就会发现其中一个是错”。这种非异常知识点很难通过搜索引擎找到满意答案,而阅读文档恰恰是最合适解决方式。...按照惯例,我在~/.emacs.d目录下建立一个lisp目录用于存放所有自定义模块文件,随后在init.el中加入下面这句代码,意在把lisp目录加到emacs加载路径列表里。...不难发现lisp解析器可以读取解析两种类型lisp代码,一种是适合人类阅读代码,el作为后缀;另一种是编译字节码,elc作为后缀。...配置完毕后,使用(provide 'init-clojure)将模块这样名字暴露给其它客户端调用。

    2.8K20

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

    ,但是有的时候需要对匹配文本进行一些处理, 这时就要用到函数调用了。...: • \& 表示整个匹配文本 • \d 表示正则匹配第 N 个分组 上面这两个特殊字符返回类型是 string,如果匹配文本是数字,那么可以用 \#& \#d 表示。...比如,在 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

    大教堂与集市(上)

    在鼓励分享代码软件文化下,一个专案这样自然方式演进。我表现出︰ 格言4︰抱持正确态度,就会发现有趣问题。...回顾过去例子,在 GNU Emacs Lisp 程序库及其 Lisp 代码资源库中,我们可以看到 Linux 模式所用方法和所得成功。...相对于 Emacs 中用 C 语言写核心部分及自由软件基金会其他工具(这都是以建造教堂模式发展),Emacs Lisp 代码资源库非常地使用者导向并且更新很快,好点子和原型在最后成熟稳定前常常都已重写过三或四次...Emacs 核心部分(用 C 语言写)就是用这种方式发展,但它 Lisp 程序库就不是。...因为 Emacs Lisp 资源库不在自由软件基金会管辖内,你可以在其中找到新发展 Lisp 程序使用,而不受限于 Emacs 发表周期[4]。

    71710

    内核知识第12讲,SSDT表.用户模式到系统模式两种方式.

    内核知识第12讲,SSDT表.用户模式到系统模式两种方式. 一丶IDT解析....我们知道.IDT表中存放着各种中断信息.比如当我们调用int 3时候,则会调用IDT表中第三项来进行调用. 而函数地址则是操作系统给. 因为中断是CPU和操作系统通信一种方式....其中微软以前用到是 2E区域, 也就是说. 2E表项是微软放函数地址地方. 二丶查看int 2E 区域. 对其反汇编....API,是我们 KiSystemService 我们可以看一下 zw系列API,其内部调用就是这个. 而这个函数作用,就是查表.取0环函数地址. ...也就是CurrentThread. 3.取得_KThread CPU运行模式. 核心代码  其中 EDI是我们传入调用函数序号. 首先EDI右移8位.

    74420

    Clojure 开发那些事

    语法入门 括号 Lisp 语法最显著特点是“括号多”,不过这只是其外在表现,内在表现是阅读代码方式,需要从最里面的表达式开始,比如: ;; Clojure > (split (upper-case...这里主要介绍 Intellj + Cursive 与 Emacs + Cider 两个环境,这两个是我用最顺手,也是现在较为流行方式。...“操作系统”,对括号著称 Lisp 语言有天然支持,括号匹配主要是 Paredit mode,可以方便把括号作为一个整体操作,不过像 Cursive 这种插件也集成了 Paredit 主要功能...nrepl Clojure REPL 可以连接到远程服务器上进程中,直接对进程中函数或变量进行修改,这是非常便利,对于很多运行时错误可以采用这种方式解决,Emacs 与 Intellj 里面都提供了连接远程...REPL server 方式

    1.6K20

    excel宏编程 c语言,宏(巨集)

    解释器或编译器在遇到宏时会自动进行这一模式替换。对于编译语言,宏展开在编译时发生,进行宏展开工具常被称为宏展开器。...MacroML有型别语法宏,一种有效理解方式是把这种语法宏看作是多阶段计算。...== 宏编程 == 在用一种不熟悉宏语言进行宏编程时,可以这样做,首先记录下用户想要宏完成什么,然后打开宏文件并尝试理解命令结构如何工作。也可以修改命令调整宏。...使用它们可以用简短击键代替冗长命令序列,并为重复性任务提供了一个简单自动化形式,但2009年已经有所改变。...Emacs 最初被设计为编辑语言 TECO 宏集,后被移植为 Lisp 一种方言 Emacs Lisp。Vim也允许用户录制和播放简单键盘宏。

    1.6K20

    Emacs Tree-sitter 初体验

    Tree-sitter 简介 Emacs 29 一大亮点就是原生支持了 tree-sitter[1](后文简称 ts),它官网是这么定义: Tree-sitter is a parser generator...在 Emacs 中,之前都是采用正则方式去解析语言语法结构,这种方式虽然大多数情况是没有问题,但主要有以下几个问题: 正则比较消耗 CPU,导致对大文件进行高亮时容易导致 Emacs 卡主,参见:...Regexp Problems (GNU Emacs Lisp Reference Manual)[2] 对于有些语法结构,正则并不能很好工作,参见:The true power of regular.../releases Emacs 默认从 treesit-extra-load-path 指定路径去加载动态链接库,如果这个值是 nil ,它默认会从 user-emacs-directory 下 tree-sitter...,需要开启 Emacs 对应 mode 来使用,比如 c-mode 对应 c-ts-mode ,Emacs 为不同语言重新实现了一个 ts-mode 结尾新 mode,在 29 版本中,主要有如下

    1.3K10

    【文末送书】JAVA设计模式之组合模式统一方式处理单个对象和组合对象

    一、什么是组合模式 组合模式是一种结构型设计模式,它允许你将对象组合成树状结构,并以递归方式处理这些对象。组合模式使得客户端可以统一方式处理单个对象和组合对象。...希望客户端统一方式处理单个对象和组合对象。 需要对对象实施一组操作,无论是叶节点还是容器节点。 一个典型组合模式例子是文件系统。...输出结果将会是: 容器节点执行操作: 叶节点 Leaf 1 执行操作 叶节点 Leaf 2 执行操作 这个示例演示了使用组合模式来处理组件部分-整体结构,以及如何以统一方式处理单个对象和组合对象。...表示对象部分-整体层次结构:当需要表示对象层次结构,并且希望统一方式处理单个对象和组合对象时,可以使用组合模式。...请简述组合模式结构和组件之间关系。 举一个现实生活中例子,说明如何使用组合模式。 在组合模式中,容器节点和叶节点之间操作有什么区别? 如何实现一个组合模式示例?请给出相关Java代码。

    53440

    玩转命令行之文本编辑器篇

    vim 具有程序编辑能力,可以主动字体颜色辨别语法正确性,方便程序设计。...1.3 使用方式 基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。...以下是常用几个命令: i 切换到输入模式输入字符。 x 删除当前光标所在处字符。 : 切换到底线命令模式在最底一行输入命令。...XEmacs是GNU Emacs分支,至今仍保持着相当兼容性。 Emacs使用Emacs Lisp,这种有着极强扩展性编程语言,从而实现了包括编程、编译乃至网络浏览等等功能扩展。...2.3 使用方式 我我我,这个真不会,但也许你会喜欢下面几个详细介绍: {% link Emacs保姆级入门讲解, https://www.bilibili.com/video/BV19p4y1X7W3

    1.2K30
    领券