Регулярное выражение для выражения деления в LHS / RHS и оператор - PullRequest
1 голос
/ 23 марта 2020

Я хочу разделить выражение с помощью оператора >. Я хочу идентифицировать любое выражение, которое использовало оператор >, и разделить его на три группы: LHS, RHS and >

Я использую следующее регулярное выражение

(.+)(>)(.+)

Я ошибочно идентифицирую группу

5 > ${a > 0 ? a :6 }

Получает

Group1: 5 > ${a
Group2: >
Group3: 0 ? a :6 }

Что является неправильным , Он должен получить

Group1: 5
Group2: >
Group3: ${a > 0 ? a :6 }

Любое предложение это работает. Могу ли я добавить в Regex что-то, что должно игнорировать оператор >, который используется внутри ${}

1 Ответ

1 голос
/ 23 марта 2020

Могу ли я добавить в Regex что-то, что должно игнорировать оператор >, который используется внутри ${}:

Вы можете использовать это регулярное выражение, пропускающее > внутри {...} (при условии отсутствия несбалансированных и экранированных скобок).

(\${[^}]+}|[^>]+?)\h*>(?![^{}]*})\h*(.+)

Демонстрация RegEx

Подробности RegEx:

  • (\${[^}]+}|[^>]+?): группа 1: сопоставить строку в формате ${...} или 1+ с любым символом, отличным от >
  • \h*>: сопоставить 0 или несколько пробелов, за которыми следует a >
  • (?![^{}]*})\h*: отрицательный прогноз, подтверждающий, что у нас нет } впереди без { и }.
  • (.+): группа 2: сопоставить оставшиеся символы
...