Регулярное выражение для разделения математических операторов в Java

#java #regex

#java #регулярное выражение

Вопрос:

У меня есть регулярное выражение в java, которому нужно разделить строку на 3 части (или 4, если операторы >= , <= , != ), LHS, Operator (может иметь двойные значения, если operator >= , <= , != ) и value . Поддерживаемые операторы > , = , < , >= , <=,!= , и дополнительный IN оператор.

Регулярное выражение, которое я использую для этого, является (?<=[><=!]|in)|(?=[<>= !]|in) ;

Однако для строки value=A B оно возвращает значение в 4 частях. value , = , A , B . Однако ожидаемые значения в массиве value : = , A B

 String [] arr =null;
arr = value.split(regexp);
  

Как изменить регулярное выражение (я вижу, удаляю ли я в регулярном выражении его возврат нормально. Но нужно убедиться, что удаление выше ничего не должно нарушать).

Комментарии:

1. Возможно, вместо этого вы захотите рассмотреть крошечный синтаксический анализатор.

2. Синтаксический анализатор в смысле чего-то для разделения строки на основе API для обработки строк?

3. Можете ли вы привести примеры допустимых и недопустимых выражений и как вы хотите их разделить? Вы уверены, что регулярных выражений достаточно для всех случаев?

4. Синтаксический анализатор в смысле синтаксического анализатора; у вас есть мини-язык, который может быть достаточно простым для обработки с упрощенной манипуляцией строками, но я, как правило, очень нервничаю каждый раз, когда люди начинают пытаться обрабатывать языки выражений специальным образом.

5. Вы также можете добавить a в группу поиска : (?<=[><=! ]|in) . Также я разделяю мнения, высказанные ранее. Вместо этого лучше написать синтаксический анализатор. Например, вы не анализируете правильность операторов.