Могу ли я определить положение символа с помощью Regex с условием префикса? - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть строка, представляющая оператор уравнения: a = b * c в инструменте, который я пишу.

Строка может содержать суффикс «комментарий» к выражению с *, представляющим комментарий.

Я использую AvalonEdit для объекта текстового редактора и пытаюсь написать правильное определение файла XSHD для соответствия обнаружению строки комментария для выделения.

Я не уверен, что это можно обнаружить с помощью регулярного выражения как* char имеет два значения в зависимости от контекста его использования.

Например,

  1. a = b * c: * является символом умножения на совпадение и не сигнализируеткомментарий (без выделения комментариев)
  2. abcdef abcd * a comment: Здесь * - символ комментария, а строка a comment должна быть выделена как комментарий
  3. 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.

Есть ли решение?

...