Emacs 函数自动生成正则表达式

本文深入探讨Emacs环境下的正则表达式使用,介绍了一个强大的调试工具M-xre-builder,并展示了如何利用regexp-opt函数自动生成高效匹配正则表达式的方法。通过实例演示了正则表达式的生成过程,以及如何使用这些工具提高编程效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Emacs 正则表达式

by Jian Lee

Emacs 里面的正则表达式首先让人感觉太乱了!主要原因是特殊字符(或称特 殊表)少,所以如果匹配常见的如: "()[]{}|" 都需要用 "\" 转义!

(let ((str "abc]-^]123"))
  (string-match "[]^0-9-]+" str)
  (match-string 0 str))                 ; => "]-^]123"

Emacs 提供一个很好的正则表达式调试工具:M-x re-builder。它能显示 buffer 匹配正则表达式的字符串,并用不同颜色显示捕捉的字符串。

可以用emacs自动生成一个高效的正则匹配:

(regexp-opt '("foobar" "foobaz" "foo"))
;; C-u C-x C-e ==> "\\(?:foo\\(?:ba[rz]\\)?\\)"

常用的函数

(regexp-quote STRING)
(regexp-opt STRINGS &optional PAREN)

常用命令

describe-syntax
describe-categories

示例

(setq adaptive-fill-regexp "[ \t]+\\|[ \t]*\\([0-9]+\\.\\|\\*+\\)[ \t]*")
;; 上面正则表达式:这表示前缀可以全是空白字符。或者开头可以有一些空白,
;; 接着数字加点或者一个以上的 *,接着一些空白。

转载于:https://my.oschina.net/freeblues/blog/105673

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值