2013-09-25 35 views
1

我有一个关于Emacs中的正则表达式的问题。
例如,有一个字符串:
abcdef defemacs lisp中的正则表达式问题

我想写一个只匹配跟随“ABC”“高清”正则表达式。也就是说,我只想捕获'abcdef',而不是'def'。
我希望这个点可以位于'abc'和'def'之间,比如'abc^def'。 (^代表点)
我记得有一种方法可以在Perl中完成,但我不确定它在ELISP中是否可行。

+0

请注意,Emacs正则表达式没有零宽度前瞻/后置断言,这很可能是您正在考虑的Perl正则表达式功能。 – phils

回答

3
(defun foo() 
    (when (re-search-forward "abc\\(def\\)" nil nil) 
    (goto-char (match-beginning 1)))) 

不过说真的,你应该阅读有关的Emacs Lisp正则表达式匹配 - 在elisp的手册,开始在节点Regular Expressions。发表这样一个基本问题没有任何借口,没有先找到答案,你自己。

StackOverflow的是冒充和解答编程问题,我们希望你清楚地specfy问题,表明您已经使用来试图解决它的代码,说你的代码做什么,你不要指望,等

总体而言,人们乐于提供帮助,但希望寻求帮助的人尽可能少付出努力。

+0

非常感谢你@德鲁,这是我想要的。我是一个elisp新手,:)谢谢你的建议 – ruanhao

+0

作为一个新手没有问题。我们至少在一些地区都是* Elisp新手。请仔细阅读该手册部分,即使您发现它很沉重。这是非常有用的,在Emacs中“获取”正则表达式将大大提高您对它的使用(以及使用它的乐趣)。 – Drew