【问题标题】:Multiline expression for Atom language grammarAtom 语言语法的多行表达式
【发布时间】:2016-10-31 12:14:12
【问题描述】:

我正在为脚本语言编写语言突出显示包。这种语言中的 cmets 以数字符号 # 开头,并在同一行结束,除非最后一个字符是 & 符号 &。这是我尝试过的。

{
    'comment': 'Comments'
    'begin': '#'
    'end': '[^&]$'
    'name': 'punctuation.definition.comment'
    'patterns': [
        {
            'include': 'text.todo'
        }
    ]
}

但这失败了,只能作为一个简单的美元符号$。 Atom 基于TextMate,它使用Oniguruma 正则表达式。这应该有效,但它不起作用(既不向后看(?<!&)$)。奇怪的是,“反向匹配”[&]$ 完美运行。

这是一个错误还是我遗漏了什么?

我的 Atom 版本是:

 Atom    : 1.10.2
 Electron: 0.37.8
 Chrome  : 49.0.2623.75
 Node    : 5.10.0

【问题讨论】:

  • 如果你需要一个负面的lookbehind,它应该是(?<!&)$$(?<!&),而不是(!<!&)$
  • @wiktor-stribiżew 你是对的,我打错了(这里不是我在 Atom 中尝试的时候)。已更正。

标签: regex atom-editor


【解决方案1】:

我仍然不知道为什么(?<!&)$ 不起作用,但是(?<!&)\n 完美地做到了:

{
    'comment': 'Comments'
    'begin': '#'
    'end': '(?<!&)\n'
    'name': 'punctuation.definition.comment'
    'patterns': [
        {
            'include': 'text.todo'
        }
    ]
}

我会尝试找出为什么字符串结尾的正则表达式(美元符号$)不起作用并更新这个答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多