Мой код выглядит следующим образом:Regex для двух действительных чисел, разделенных пробелом
String realNumber = "[+-]?[\\d]+(?:[\\.][\\d]+)?";
s.next(realNumber + "[\\s]+" + realNumber);
Полное регулярное выражение:
[+-]?[\\d]+(?:[\\.][\\d]+)?[\\s]+[+-]?[\\d]+(?:[\\.][\\d]+)?
Это не работает. Если я использую s.next(realNumber);
, он отлично работает для одного действительного числа, то есть 321.1
или 12
и т. Д. Пространство - это часть, которая, похоже, исключает исключение несоответствия.
Я пытался заставить это работать в течение последнего часа сейчас>.> Пожалуйста, помогите!
Patterns, которое должно соответствовать:
1 1
1.1 2.1
123 1.123
123.123 1
Я получил его, чтобы успешно работать на regex101.com: https://regex101.com/r/fM7uA5/100, но он по-прежнему бросает исключение в Java.
Кроме того, вам не нужны классы символов, если есть только одна вещь. Например. '[\\ d]' совпадает с '\\ d'. –
Попробуйте ускользнуть от '-' в классе символов' [+ -] '. Обычно он используется для обозначения диапазона. –
@ AndyTurner Я нахожу, что квадратные скобки вокруг персонажа облегчают чтение. Также '-' в' [+ -] ', кажется, работает нормально, вы поднимаете действительную точку, но' [\\ s] 'кажется виновником в этом случае. – ChickenFeet