【问题标题】:Regex to match anything between = object and (正则表达式匹配 = object 和 (
【发布时间】:2020-05-01 04:57:27
【问题描述】:

我正在开发一个 VS Code 扩展来支持一种新语言,对于一些语法高亮,我想匹配 = object( 之间的任何文本。

我尝试了以下正则表达式:

{
    "name": "entity.name.class",
    "match": "(?<==\\s*object).*?(?=\\()"
},

但是当我将它添加到我的语法文件中时,它会破坏所有其他正在运行的规则,一切都会再次变白。

该正则表达式(?&lt;==\s*object).*?(?=\()/ghttps://regexr.com/ 上使用以下文本:

!var = object REAL()
!var = object BORE(!bore)
!var =object REAL  ()
!var =object BORE  (!bore)

VS Code 没有给我任何异常或提示为什么这个 Regex 不起作用,有没有人知道 Regex 为什么在 VS Code 中不起作用?

【问题讨论】:

    标签: visual-studio-code vscode-extensions tmlanguage


    【解决方案1】:

    您提到添加新模式会导致您的测试文件丢失所有语法突出显示。这使我相信您在实际语法中存在语法问题,阻止了任何语法模式应用程序。您的正则表达式虽然不是最佳的,但在语法上似乎是正确的,所以我怀疑这是您的问题的原因。为了将来参考,VS Code 一次只应用匹配一行的语法模式。这意味着如果您的正则表达式不正确,则只有与模式匹配的行会缺少语法突出显示,而不是整个文档。

    希望这个答案对您的问题来说还不算太晚。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-22
      • 2015-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-30
      • 2011-05-01
      相关资源
      最近更新 更多