Я хочу попробовать отфильтровать все операторы и операнды, включая числа с плавающей запятой, из ввода командной строки с помощью регулярного выражения.операторы работают нормально, и с плавающей запятой работает, когда я использую это с отдельным сопоставителем, но я хочу решить это за одно выражение регулярного выражения, мой код до сих пор делает
Matcher numbers = Pattern.compile("[0-9]*\\.?[0-9]+").matcher(expr);
Matcher m = Pattern.compile("[\\+|\\*|/|\\-|\\^|\\!|_|([0-9]*\\.?[0-9]+)]").matcher(expr);
while(numbers.find()) {
System.out.print(" " + numbers.group() + " num \n");
}
while (m.find()) {
System.out.print(" " + m.group() + " -- \n");
}
heres output
3,0 номер 2 номер
3 -.- 0 - 2 -
, поскольку вы видите, что средство сравнения чисел просто находит числа с плавающей запятой и нормальные числа, и это прекрасно работает.но если я использую его во втором совпадении, разделенном на or
, я получу 3.0 как отдельные совпадения.