Я пытаюсь разбить строку арифметического уравнения на токены в Java. Эти уравнения также включают символы неравенства! =, < =,> =,> и <.разделение символов неравенства в строке на токены? (Java/Regex)
например. (2 * 2 < = 5) должна быть разделена как:
(, 2, *, 2, < =, 5, )
Прямо сейчас, мое решение добавляет пробел перед & после каждого оператора, затем разбивая его на пробелы, но у меня возникают проблемы с дифференциацией < = и <, когда я это делаю. Я полагаю, вам понадобится регулярное выражение, которое проверяет, нет ли = после < или нет, но я не могу заставить его придумать тот, который работает.
Как бы я это сделал? Или есть лучший способ?
Что я могу сделать прямо сейчас:
String[] tokens = expression
.replaceAll("\\+", " + ")
.replaceAll("\\^", "^")
.replaceAll("^-", "-1*")
.replaceAll("-\\(", "-1*(")
.replaceAll("-", " -")
.replaceAll("\\*", " * ")
.replaceAll("/", "/")
.replaceAll("!", " !")
.replaceAll(">", " >")
.replaceAll("<", " <")
.replaceAll("\\(", "(")
.replaceAll("\\)", ")")
.split(" ");
** Я думаю, вам нужно регулярное выражение, которое проверяет, есть ли no = после <или нет. ** Вы не могли этого сделать. Вы также можете просто проверить '<=' перед '<', и он разрешится сам. В зависимости от требований к производительности это также будет очень медленным решением. 'StringUtils.replaceEach' из Apache StringUtils может быть быстрее. –
Использование должно использовать регулярное выражение для поиска \ d (<=) \ d, а затем заменить захваченную группу на "<=". Другой должен быть \ d (<) \ d. – Sedrick