@vyn

Верное регулярное выражение для полинома. Как образом?

Я написал регулярное выражение для проверки валидности полинома. Например

String poly 0 = "2.5*x1^3+4.0*x2^2+5.0*x3+x4+45.0", poly 1 = "2.5*x1^3"

Мое регулярное выражение: String regexp = "([\+\-]?(?:(?:\d+\.\d+[\*\/]x\d+\^\d+)|(?:\d+\.\d+[\*\/]x\d+)|(?:\d+\.\d+)|(?:x\d+)))". Экранирование я учел.

Pattern p = Pattern.compile(regexp);

p.matcher(poly1).matches() == true

Почему следующая команда возвращает false?

p.matcher(poly0).matches() == false

Полагаю, что регулярное выражение написано неверно. Прошу Вашей помощи.

public class ObjectFunctionValidator {
    private static String OBJECT_FUNCTION_REGEXP = "([\\+\\-]?(?:(?:\\d+\\.\\d+[\\*\\/]x\\d+\\^\\d+)|(?:\\d+\\.\\d+[\\*\\/]x\\d+)|(?:\\d+\\.\\d+)|(?:x\\d+)))";

    public static boolean validate(String exp) {
       return exp.matches(OBJECT_FUNCTION_REGEXP);
    }
}
  • Вопрос задан
  • 88 просмотров
Пригласить эксперта
Ответы на вопрос 2
mayton2019
@mayton2019 Куратор тега Java
Bigdata Engineer
Воспользуйся онлайн чекером здесь https://regex101.com/
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
[+-]?(?:\d+\.?\d*\*|\.\d+\*|)x\d+(?:\^\d+)?(?:[+-](?:\d+\.?\d*\*|\.\d+\*|)x\d+(?:\^\d+)?)*(?:[+-](?:\d+\.?\d*|\.\d+))?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы