Я написал регулярное выражение для проверки валидности полинома. Например
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);
}
}