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

7

我在elisp代码中有一个字符串变量,并希望使用正则表达式和分组从中提取一些部分到其他变量中。这是在任何语言中可以用1-2行代码编写的内容:

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

如何在Elisp中编写相同的代码呢?

1个回答

14

好的,谢谢!相信我:在提问之前我确实尝试过阅读食谱,但是没有在合理的时间内找到这个菜谱 :-) - Artyom V. Kireev
有没有一种简单的方法将Perl正则表达式(在breqwas的问题中提到)翻译成你提到的emacs正则表达式? - aartist
@aartist:将.+替换为[^@]+是一种正确性修复,应该也适用于Perl正则表达式。我在Emacs中使用的反斜杠引号正确对应于Perl中的\A\Z。总的来说,Perl具有更丰富的正则表达式扩展集,而Emacs具有一些特殊功能,例如其\s语法字符类,因此并非所有正则表达式都可以直接转换。如果您想了解详细信息,请发布单独的问题。 - tripleee
2
说句实话,我也将这个添加到了EmacsWiki的Elisp Cookbook页面上。 - tripleee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接