0

我正在创建一个括号/括号完成函数,就像自动配对这样的包。

我将组合存储在alist("[" . "]").

当我尝试将 用作正则(car (car my-alist))表达式时, in (looking-back REGEXP),这不起作用,因为它将它视为"[",而不是字符串,它是一个不完整的正则表达式:

looking-back: Invalid regexp: "Unmatched [ or [^"

我该如何使用它,以便仍然可以将它作为字符串插入(car (car my-alist))(所以“[”),同时还可以使用“[”作为正则表达式?

请注意,这确实适用于"(",因为这不是特殊的正则表达式字符。

4

2 回答 2

1

您可以使用(looking-back (regexp-quote (caar my-alist))).

regexp-quote是 C 源代码中的内置函数。

(regexp-quote STRING)

返回与 STRING 完全匹配的正则表达式字符串,仅此而已。

于 2013-02-07T22:01:55.187 回答
1

不直接回答你的问题...

您可能应该考虑查看该paren是如何实现的,特别是它是使用语法 table的开/关括号类实现的。

通过这样做,您将能够利用导航 s 表达式的所有内置函数- 并正确处理嵌套匹配对。

利用这个内置功能将使您的代码更简单,并且能够独立于模式工作(即不仅限于[and ])。

于 2013-02-07T22:11:47.230 回答