Условное регулярное выражение для различия между нулем и значением

1
7

Я работаю над REST API, который имеет конечную точку GET для поиска сделок в контексте фондовых бирж.
Он поддерживает динамическую фильтрацию, поэтому клиент может задать поле (столбец) торговли, оператор сравнения и значение сравнения
по своему желанию.
например, Result -eq [Win] или Result -eq [BreakEven]
Оператор должен начинаться с тире, а значение сравнения должно быть заключено в квадратные скобки.
Все, что находится в квадратных скобках, будет рассматриваться как значение.
например, [some-value с пробелами, "двойными кавычками" и [] внутри] вполне допустимы.
Между тремя компонентами фильтра должен быть хотя бы один пробел.

Фильтр отправляется как простая строка на бэкэнд и там проверяется с помощью регулярных выражений.

У меня уже есть регулярное выражение, которое это делает.

\s*(?<property>.*?)\s+(?<operator>-.*?)\s+\[(?<comparisonValue>.*?)\]\s*$

Вот несколько примеров из регулярного выражения 101
введите описание изображения здесь

Теперь я хочу добавить литерал null, чтобы клиенты могли явно искать записи, которые не имеют значения.
Семантически все, что находится в квадратных скобках, рассматривается как значение, но null не является значением.
Поэтому скобки должны быть опущены при сравнении с null, например:
Результат -ne null

Поэтому моему регулярному выражению нужно условие для соответствия либо литералу null (без квадратных скобок), либо значению в квадратных скобках.

У меня нет опыта, чтобы говорить о регулярных выражениях.
То, что у меня есть, было создано с помощью поиска в Google и проб и ошибок.
Оно предназначено для проверки входных данных, а не для их анализа.

Как мне добавить условие для соответствия либо значению (в квадратные скобки) или литеральный ноль?

И любые предложения по улучшению моего регулярного выражения будут высоко оценены.

Заранее спасибо!

Октябрина
Вопрос задан3 января 2024 г.

1 Ответ

Ваш ответ

Загрузить файл.