ELisp regexp:匹配组,如果后跟其他正则表达式

时间:2010-12-04 18:27:12

标签: regex emacs elisp

我正在为我正在实现的基本语言编写一个主要的Emacs模式。我想强调方法调用的语法,其中方法名称由[a-z][^()]*检查,但仅在([^)])后面。我如何定义一个正则表达式,如果第二部分后跟第一部分,则匹配第一部分,但不突出显示第二部分?

1 个答案:

答案 0 :(得分:1)

试试这个:

(font-lock-add-keywords 'my-mode
  '(("\\(\\b[a-z][^()]*\\)([^)]*)"
  1 font-lock-function-name-face t)))

1表示将突出显示应用于第一个子表达式。

注意:我添加了一个\\b,只有在[a-z]开始一个字时才会匹配(否则Dude()会突出显示ude),我添加了一个{/ 1}}在最后一组parens b / c中,它似乎丢失了。

我在c ++模式下对此进行了测试。

可以找到有关font-lock-add-keywords和其他字体锁定内容的文档here