2017-02-16 9 views
3

Я пытаюсь написать регулярное выражение для AvalonEdit.TextEditor, чтобы отметить все после второго | определенного цвета.Подсветка синтаксиса с AvalonEdit

Пример (значение должно быть цвет):

action|key|value

Я пытаюсь что-то вроде этого, но это не работает, потому что я не могу определить группу, Я хочу цвет.

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

Любые идеи?

+0

Что такое 'P'? Без него это выглядит хорошо. –

+0

Попробуйте следующее: '^ [^ \ |] * \ | [^ \ |] * \ \ \ K [^ \ |] +' if - если это возможно - механизм регулярных выражений на самом деле не .NET, а Onigmo/PCRE/подталкивания. Он будет работать в regex101 с опцией PHP, но не тестируйте там тест в редакторе. –

ответ

2

Попробуйте это: (?<=[^\|]+\|[^\|]+\|)(?<value>[^\|]+)

Положительный взгляд фоновым (?<=) удостоверится action и key не являются частью матча.

Как правило, вы не должны использовать нефиксированные длины, но, возможно, это работает для вас.

+0

Это правило дает мне исключение: Правило подсветки соответствует 0 символам, что вызовет бесконечный цикл. Измените определение выделения, чтобы правило соответствовало хотя бы одному символу. Также попробовал это здесь https://regex101.com/ с другой ошибкой: квантификатор внутри lookbehind делает его нефиксированной шириной – Alioooop

+0

regex101 не имеет C# RegEx. Попробуйте [Regex Storm] (http://regexstorm.net/tester). Жаль, что это не работает с текстовым редактором Avalon. Можете ли вы предоставить [mcve]? Я заменил '*' на '+', возможно, это уже делает трюк. –

+0

WOHO, замена * на + сделал трюк! :) Благодаря! – Alioooop

 Смежные вопросы

  • Нет связанных вопросов^_^