0

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

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

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

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

该正则表达式(?<==\s*object).*?(?=\()/g可在https://regexr.com/上使用以下文本:

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

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

4

1 回答 1

0

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

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

于 2020-10-05T20:32:20.373 回答