Emacs中缺少regexp-opt功能?

reh*_*ift 2 emacs elisp

我开始玩elisp来在Emacs中创建字体锁(语法高亮).大多数教程都提到使用elisp函数"regexp-opt"来优化正则表达式,但我的emacs版本(23.2)似乎没有这个功能.此外,谷歌搜索答案似乎没有出现有用的结果.有任何想法吗?

Dir*_*irk 6

你可以通过C-h f regexp-opt以下方式找到:

regexp-opt是一个编译好的Lisp函数.

(regexp-opt字符串和可选的paren)

返回正则表达式以匹配列表字符串中的字符串.每个字符串在字符串中应该是唯一的,并且不应包含引用或不引用的任何正则表达式.如果可选paren为非nil,请确保返回的regexp至少包含一个regexp分组结构.返回的正则表达式通常比等效的正则表达式更有效:

(let((open(如果paren"\("""))(关闭(如果paren"\")""")))
(concat open(mapconcat'regexp-quote strings"\ |")close))

如果paren是`words',那么生成的regexp还会被\ <和>包围.

注意,它是一个在Lisp代码中使用的函数,而不是您可以运行的交互式命令 M-x


Mat*_*ela 5

regexexp-opt是一个elisp函数,但不是emacs命令.这就是为什么你不能通过运行来执行它:Mx regexp-opt

但是,您可以从elisp shell执行任何elisp函数.输入Mx eshell.从这个shell你可以运行regexp-opt