Soo я думаю, что я уже решил это, что я сделал:Регулярные выражения (знаменатель дроби)
String pattern = "(<=|>=)\\s{0,2}((+]\\s{0,2})?(\\d+\\s{0,2}[/]\\s{0,2}(\\d{2,}|[1-9])\\s{0,2}|\\d+[.]\\d{1,2}|\\d+))\\s{0,2}";
Узор что-то неправильно, я исправил его выше, и теперь он работает :)
У меня есть неравенство, которое может содержать> = или < =, некоторые пробелы и число. Это число может быть целым числом, десятичным числом с двумя десятичными знаками или долей, и я хочу получить номер на втором члене неравенства с помощью «Матчи». Пример:
4x1 + 6x2 <= 40/3
Я попытался построить такой шаблон, и я смог его найти. Но потом я вспомнил, что фракцию нельзя делить на ноль, поэтому я хочу проверить это. Для этого я использовал следующий код:
String inequation = "4x1 + 6x2 <= 40/3";
String pattern = "(<=|>=)\\s{0,2}((+]\\s{0,2})?(\\d+\\s{0,2}[/]\\s{0,2}(\\d{2,}|[1-9])\\s{0,2}\\d+|\\d+[.]\\d{1,2}|\\d+))\\s{0,2}";
Pattern ptrn = Pattern.compile(pattern);
Matcher match = ptrn.matcher(inequation);
if(match.find()){
String fraction = match.group(2);
System.out.println(fraction);
} else {
System.out.println("NO MATCH");
}
Но он не работает должным образом. Если на знаменателе есть как минимум 2 цифры, он возвращается правильно (например, 40/32). Но если он имеет только 1 цифру, он возвращает только целую часть (например, 40).
В любом случае, чтобы решить эту проблему? Какое выражение следует использовать?
Можете ли вы показать нам свой выход? –
В примере я дал результат 40. Как я сказал, если у меня на втором члене такая фракция, как эта «40/32», она возвращается правильно (возвращается 40/32), но если доля на втором члене равна что-то вроде этого «40/3», выход идет только с числителем (40). – user5756984