У меня есть строка, представляющая оператор уравнения: a = b * c
в инструменте, который я пишу.
Строка может содержать суффикс «комментарий» к выражению с *
, представляющим комментарий.
Я использую AvalonEdit для объекта текстового редактора и пытаюсь написать правильное определение файла XSHD для соответствия обнаружению строки комментария для выделения.
Я не уверен, что это можно обнаружить с помощью регулярного выражения как*
char имеет два значения в зависимости от контекста его использования.
Например,
a = b * c
: *
является символом умножения на совпадение и не сигнализируеткомментарий (без выделения комментариев) abcdef abcd * a comment
: Здесь *
- символ комментария, а строка a comment
должна быть выделена как комментарий a = b * c * a comment
: Здесь первое *
является оператором сопоставления, но второй является символом комментария ... поэтому строка a comment
должна быть выделена как комментарий
Я попробовал следующие определения для обнаружения комментариев в файле XSHD:
<Span color="Comment" begin="\*" end="\n" />
Этот очиститель решает 2-й пример ... но он ошибочно установит c
в качестве комментария к примеру 1.
Затем я попытался <Span color="Comment" begin="^(?!.*=.*\*).*?\*.*" end="\n" />
, использовать подход с отрицательным прогнозом для решения примера 1но затем он захватывает всю строку в качестве комментария к примеру 2.
Оба определения не могут обнаружить сценарий примера 3.
Мне интересно, не может ли моя проблема быть решена с помощью регулярного выражения (поскольку XSHD требует), поскольку *
используется в двух разных значениях ..
Я использую AvalonEdit 5.0.4.
Есть ли решение?