【问题标题】:Syntax highlighting with AvalonEditAvalonEdit 的语法高亮
【发布时间】:2017-07-05 12:49:58
【问题描述】:

我正在尝试为AvalonEdit.TextEditor 编写一个正则表达式,以将第二个| 之后的所有内容标记为某种颜色。

示例(值应该是颜色):

动作|键|价值

我正在尝试这样的事情,但它不起作用,因为我无法指定我想要着色的组。

^[^\|]*\|[^\|]*\|(?P<value>[^\|]*)

有什么想法吗?

【问题讨论】:

  • P 有什么用?没有它对我来说看起来很好。
  • 尝试以下操作:^[^\|]*\|[^\|]*\|\K[^\|]+ 如果 - 无论如何 - 正则表达式引擎不是真正的 .NET 引擎,而是 Onigmo/PCRE/Boost。它将在带有 PHP 选项的 regex101 上工作,但不要在那里测试,在编辑器中测试。

标签: c# regex syntax-highlighting avalonedit


【解决方案1】:

试试这个:(?&lt;=[^\|]+\|[^\|]+\|)(?&lt;value&gt;[^\|]+)

积极的后视 (?&lt;=) 将确保 actionkey 不属于匹配项。

通常你不应该使用非固定长度的look-behinds,但也许这对你有用。

【讨论】:

  • 这条规则给了我一个例外:高亮规则匹配0个字符,这会导致死循环。更改突出显示定义,使规则至少匹配一个字符。也在这里regex101.com 尝试过,但出现了不同的错误:lookbehind 中的量词使其宽度不固定
  • regex101 没有 C# RegEx。试试Regex Storm。太糟糕了,这不适用于 Avalon 的 textEditor。你能提供一个minimal reproducible example吗?我用+ 替换了*,也许这已经成功了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-19
  • 2011-09-11
  • 2012-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-15
相关资源
最近更新 更多