Удалить конечную десятичную точку и нули с помощью Regex
Является ли это правильным REGEX для удаления конечных десятичных чисел и нулей из строки? Я не могу заставить его работать. Что мне не хватает?
78.000 → 78
78.008 → 78.008
str.replaceAll("^.0*$", "");
Ответ 1
Вам нужно избежать ., так как это специальный символ в Regex, который соответствует любому символу. Вы также должны удалить ^, который привязывается в начале номера.
str.replaceAll("\\.0*$", "");
Вы можете использовать lookbehind, если хотите убедиться, что перед точкой есть число, например:
str.replaceAll("(?<=^\\d+)\\.0*$", "");
Lookbehind (часть (?<=...)) не является частью совпадения, поэтому он не будет заменен, но он все равно должен совпадать для соответствия остальных регулярных выражений.
Ответ 2
Неа. Используйте это:
str.replaceAll("[.0]+$", "");
Ответ 3
Избавьтесь от ^, который соответствует началу строки. Вам также нужно выйти ., так как это метасимвол регулярного выражения, который соответствует любому символу (кроме строк новой строки):