Java от дроби - PullRequest
       0

Java от дроби

0 голосов
/ 19 сентября 2019

Как я могу изменить 4 -1/4 -5 на 4/1 -1/4 -5/1 с помощью регулярных выражений?

String str = "4 -1/4 -5";
String regex = "(-?\\d+/\\d+)";
Matcher matcher = Pattern.compile(regex).matcher(str);

Мой код находит только дробь, но я хочу найти целое без дроби.

Ответы [ 3 ]

1 голос
/ 19 сентября 2019
String result = str.replaceAll("(?<!/)\\b\\d+\\b(?!/)", "$0/1");

ищет целые числа (\b\d+\b), которым не предшествует ((?<!/)), и не следует косая черта ((?!/)), и добавляет к ним /1.

0 голосов
/ 19 сентября 2019

Попробуйте (?<=-| |^)(\d+)(?!\d*\/)

Объяснение:

(?<=...) - положительный прогноз, утверждайте, что предшествует совпадению с шаблоном внутри

-| |^ - соответствует либо -, , или начало строки ^

(\d+) - сопоставить одну или несколько цифр и сохранить в первой группе захвата

(?!\d*\/) - отрицательный прогноз, утверждайте, что следуетэто не ноль или цифры мроу, за которыми следует \/.

Замените его на \1/1, поэтому за первой группой захвата следуют /1

Демо

0 голосов
/ 19 сентября 2019

Я не уверен, что понимаю, что вы хотите сделать здесь, но если вы хотите удалить косую черту, вы можете использовать:

str.replaceAll("\\/", " ");

Это оставит вас сстрока, содержащая только целые числа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...