Sublime / Textmate / Atom中的语法正则表达式

时间:2016-03-11 13:26:28

标签: regex sublimetext textmate atom-editor

在Puppet中有两种形式的要求:

关系

require foo

Metaparameter

require => 'foo'

我想更改Texmate / Sublime Text / Atom语法,以便正确突出显示它们。

现在代码看起来像这样(Atom包,但它们都共享相同的Textmate样式正则表达式):

{
    'begin': '(?i)\\b(import|include|require)\\b\\s*'
    'beginCaptures':
      '1':
        'name': 'keyword.control.import.include.puppet'
    'end': '(?=\\s|$)'
    'name': 'meta.include.puppet'
}

但是,这意味着require =>仍会突出显示:

Example incorrect highlighting

当语法正确时,require =>应该是橙色。

如何更改正则表达式以满足此要求?它需要单独的规则吗?

2 个答案:

答案 0 :(得分:1)

您可以添加否定前瞻:

(?!.*=>)\b(import|include|require)\b\s*

这将声明该行不包含=>,请参阅 Live Demo

答案 1 :(得分:0)

试试以下正则表达式。我知道它很冗长,但试图涵盖很多可能性。

(?mi)(?<=\b)(require|import|include)\s+(=>\s*)?('\S+'|[^\s']+)\s*$

请参阅DEMO此处