Emacs lisp:从正则表达式匹配中获取子匹配

Art*_*eev 3 emacs elisp

我在elisp代码中的某处有一个字符串变量,并希望使用带分组的正则表达式将其中的某些部分提取到其他变量中.这是你可以用任何语言写成1-2行的东西:

my ($user, $domain) = $email =~ m/^(.+)@(.+)$/;

我如何在elisp中写相同的内容?

tri*_*eee 8

(save-match-data ; is usually a good idea
  (and (string-match "\\`\\([^@]+\\)@\\([^@]+\\)\\'" email)
       (setq user (match-string 1 email)
             domain (match-string 2 email) ) ))
Run Code Online (Sandbox Code Playgroud)

GNU的Emacs Lisp参考手册是你的朋友.另见http://emacswiki.org/emacs/ElispCookbook

  • 对于它的价值,我也将其添加到 EmacsWiki Elisp Cookbook 页面。 (2认同)