3

有人可以解释为什么这个 Emacs 正则表达式

find_class \(\w+|([^)]+)\) \(\w+|([^)]+)\)

这些行中的任何一行都不匹配?

let _, scn, _ = find_class (obj :: cs) c in scn

aux (find_class (obj :: cs) scn) (cn :: desc)

let _, scn, ms = find_class c cs in

看起来很简单:我正在寻找函数的调用,其中参数可以显示为单个单词或带括号的任意字符串。当我将等效表达式 ( find_class (\w+|\([^)]+\)) (\w+|\([^)]+\))) 插入 Ruby 时,它会执行我想要的操作,但不是在这里。我错过了什么吗?

我发现 Emacs 的正则表达式对于实际使用来说真的很麻烦,以至于我正在重新考虑我选择的编辑器。如果有一种合理的方法来改进这一点(即更简洁的语法,更多的字符类),我很想听到它,但我还没有找到任何东西。

4

2 回答 2

3

我认为您需要\|在 emacs 正则表达式中达到与 Ruby 相同|的效果。

于 2012-07-11T01:51:57.610 回答
3

回复:很麻烦,看看 Emacs 的正则表达式的文档会有所帮助:

http://www.gnu.org/software/emacs/manual/html_node/elisp/Syntax-of-Regexps.html

第 3 节“正则表达式反斜杠”包含 nhahtdh 已经指出的问题的答案。不要忘记 Emacs 的正则表达式语法早于 POSIX 标准。

于 2012-07-11T02:07:04.747 回答