Я пытаюсь расшифровать каждые отдельные монома в строке, представляющей многочлен. < /p>
public static void main(String[] args) {
String polynomial = "3x^3-x^2+5.9x-3.8";
String monomialFormat = "([+-]?[\\d\\.]*[a-zA-Z]?\\^?\\d*)", monomialPartsFormat = "([+-]?[\\d\\.]*)([a-zA-Z]?)\\^?(\\d*)";
Pattern p1 = Pattern.compile(monomialFormat);
Matcher m1 = p1.matcher(polynomial);
while (!m1.hitEnd()) {
m1.find();
Pattern p2 = Pattern.compile(monomialPartsFormat);
System.out.print(m1.group() + " -> ");
Matcher m2 = p2.matcher(m1.group());
float coefficient;
try {
coefficient = Float.valueOf(m2.group(1));
} catch (IllegalStateException e) {
coefficient = 0.0F;
}
int exponent;
try {
exponent = Integer.valueOf(m2.group(3));
} catch (IllegalStateException e) {
exponent = 0;
}
char variable;
try {
variable = m2.group(2).charAt(0);
} catch (IllegalStateException e) {
variable = '_';
}
System.out.println("" + coefficient + variable + "^" + exponent);
}
}
< /code>
Первый шаблон работает правильно и разрезает многочлен на несколько мономов, но не второй. Никаких совпадений не найдено для различных частей каждого монома (коэффициент, переменная, экспонента).
Должно быть что -то не так во второй регулярной экспозиции, но я не могу его найти. < /P>
Результаты отпечатков: < /p>
3x^3 -> 0.0_^0
-x^2 -> 0.0_^0
+5.9x -> 0.0_^0
-3.8 -> 0.0_^0
Подробнее здесь: https://stackoverflow.com/questions/349 ... nd-matcher