Visual Studio 如何在 Regex 构造函数中语法高亮字符串?

How does Visual Studio syntax-highlight strings in the Regex constructor?

各位程序员和书呆子们大家好!

创建正则表达式 Visual Studio 时,如果字符串前面有逐字标识符(例如 @"Some string),IDE 将突出显示该字符串。这看起来像这样:

(注意字符串突出显示的方式)。我敢肯定,你们中的大多数人现在已经看到了。

我的问题:我使用的是从 NuGet 获取的处理正则表达式的包,它们有一个接受正则表达式字符串的函数,但是它们的函数没有语法高亮。

如您所见,这只会让读取 Regex 字符串变得很痛苦。我的意思是,这不是很重要,但如果我们能有视觉上有帮助的突出显示来减少一个人的大脑试图破译表达的时间和精力,那将会有所不同,尤其是在像我这样的情况下这些表情会相当多。

问题

所以我想知道的是,有没有办法让函数以这种方式突出显示字符串*,或者它只是针对特定情况硬连线到 IDE 中的东西正则表达式 c-tor?是否有某种注释可以附加到函数上以最小的努力实现这一点,或者是否有必要使用某种扩展?

*我已经将对 AddStyle() 的调用包装到我自己的函数之一中,并且字符串将作为参数传递,因此如果需要进行任何修改以实现语法高亮,它们可以满足我的功能。因此,AddStyle() 函数来自外部库这一事实应该是无关紧要的。

如果工作量很大,那么不值得我花时间,欢迎其他人开发扩展来解决这个问题,但如果有办法...

重要区别

请记住我说的是 Visual Studio,不是 Visual Studio 代码。

此外,如果有办法从正则表达式中提取原始表达式字符串,我可能会那样做,因为这里的性能并不是一个大问题,因为这是一次启动的事情,但是我宁愿不要那样做。我实际上并不需要 Regex 对象。

根据https://devblogs.microsoft.com/dotnet/visual-studio-2019-net-productivity/#regex-language-support and https://www.meziantou.net/visual-studio-tips-and-tricks-regex-editing.htm,您可以用特殊注释标记字符串以获得语法高亮显示:

  // language=regex
  var str = @"[A-Z]\d+;

  MyMethod(/* language=regex */ @"[A-Z]\d+);

(评论可能不止这个language=regex部分)

第一个链接的博客谈到了预览,但这个功能也出现在最终产品中。