Регулярное выражение для получения свободного коэффициента
Я написал регулярное выражение для поиска коэффициентов при x1,x2,x3. Например: -0.12x1+0.26x2-0.17x3+4.
Вот оно:
-?[\d]+[\.,\,]?[\d]*(?=x[1-3])
Но также нужно искать свободный член, типа 4 при этом он может быть дробным и(или) с минусом.
Но из-за плохого понимания регулярок,не могу дополнить. Прошу помочь с этим вопросом.
Ответы (1 шт):
Вам нужно ваше выражения разделить на части. В каждую часть будет входить: -(опционально), целая часть, дробная часть (опц.), коэффициент (опц.) либо -(опционально) и коэффициент.
Всё это можно представить следующим regexp
-?(\d+?(\.\d+)?(x\d*)?|(x\d*)).
Чтоб найти все части в вашем выражении создайте Pattern и пройдитесь циклом:
Pattern compile = Pattern.compile("-?(\\d+?(\\.\\d+)?(x\\d*)?|(x\\d*))");
Matcher matcher = compile.matcher("-0.12x1+0.26x2-0.17x3+4");
while(matcher.find())
System.out.println(matcher.group(0));
P.S. Добавил |(x\d*) на случай, если будет только переменная x без коэффициента, если для вашего случая это не нужно - можно убрать.