如何以编程方式创建一个正则表达式,以匹配给定字符串中的所有单个字符与elisp?

RNA*_*RNA 2 lisp regex emacs

例如,我有一个字符串abcdefg. *,如何创建一个[abcdefg\. *]可以匹配字符串中每个字符的正则表达式?问题是可能存在特殊字符,例如.字符串中.

Jon*_* O. 6

一个简单而强大的解决方案是使用内置regexp-opt函数,该函数获取固定字符串列表并返回有效的正则表达式以匹配其中任何一个.然后,您需要做的就是将原始字符串拆分为单字符段:

(regexp-opt
 (mapcar #'char-to-string
         (string-to-list "abcdefg. *"))) ; => "[ *.a-g]"
Run Code Online (Sandbox Code Playgroud)