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

时间:2013-04-26 18:41:14

标签: emacs elisp

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

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

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

1 个答案:

答案 0 :(得分:6)

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

GNU Emacs Lisp Reference Manual是你的朋友。另请参阅http://emacswiki.org/emacs/ElispCookbook