使用AvalonEdit进行语法高亮显示

3

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

例如(值应该是一种颜色):

action|key|value

我尝试了以下正则表达式,但它不起作用,因为我无法指定要着色的组。

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

有什么想法吗?


“P” 是什么意思?没有它,我觉得看起来很好。 - Manfred Radlwimmer
尝试使用以下代码:^[^\|]*\|[^\|]*\|\K[^\|]+,如果正则表达式引擎不是 .NET 引擎,而是 Onigmo/PCRE/Boost 引擎。在 regex101 中使用 PHP 选项将其运行,但请勿在那里进行测试,请在编辑器中测试。 - Wiktor Stribiżew
1个回答

3
尝试这个:(?<=[^\|]+\|[^\|]+\|)(?<value>[^\|]+)。正向回顾后面的内容(?<=)将确保匹配不包含 actionkey。通常情况下,不应使用非固定长度的回顾后发,但也许对您有用。

1
这个规则给了我一个异常: 一个高亮规则匹配了0个字符,这会导致无限循环。更改高亮定义,使规则至少匹配一个字符。在 https://regex101.com/ 上也尝试了,但出现了不同的错误:回顾后发现内部的量词使其宽度不固定。 - Alioooop
1
regex101没有C#正则表达式。请尝试使用Regex Storm。很遗憾,此方法无法在Avalon的文本编辑器中使用。您能提供一个[mcve]吗?我用*替换了+,也许这已经可以解决问题了。 - Manfred Radlwimmer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接