2017-02-16 113 views
3

我试图编写一个AvalonEdit.TextEditor的正则表达式来标记第二个|之后的所有颜色。使用AvalonEdit编写的语法高亮

例(值应该是一个颜色):

action|key|value

我想这样的事情,但它不工作,因为我不能指定我想色组。

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

任何想法?

+0

什么是“P”?没有它,我看起来很好。 –

+0

请尝试以下操作:'^ [^ \ |] * \ | [^ \ |] * \ | \ K [^ \ |] +如果 - 任何机会 - 正则表达式引擎并不是真正的.NET, Onigmo/PCRE /升压。它将在PHP选项regex101下工作,但不要在那里测试,在编辑器中测试。 –

回答

2

试试这个:(?<=[^\|]+\|[^\|]+\|)(?<value>[^\|]+)

正向后看(?<=)将确保actionkey不是比赛的一部分。

通常情况下,你不应该使用非固定长度的外观,但也许这适用于你。

+0

此规则给我一个例外: 高亮规则匹配0个字符,这会导致无限循环。更改高亮显示定义,以便该规则至少匹配一个字符。 也尝试过在这里https://regex101.com/与一个不同的错误:在lookbehind内的量词使其非固定宽度 – Alioooop

+0

regex101没有C#RegEx。尝试[正则表达式风暴](http://regexstorm.net/tester)。太糟糕了,这不适用于Avalon的文本编辑器。你能提供[mcve]吗?我用'+'替换了'*',也许这已经是个诀窍了。 –

+0

WOHO,用+代替*做了诡计! :) 谢谢! – Alioooop