Удаление конечных нулей с помощью регулярного выражения REPLACE - PullRequest
1 голос
/ 08 апреля 2020

Удаление конечных нулей в число с 4 десятичными знаками

Пример ожидаемого результата:

1.7500 -> 1.75

1.1010 -> 1.101

1.0000 -> 1

Я новичок в REGEX, поэтому я сначала попробовал этот, но не работал:

REPLACE ALL OCCURRENCES OF REGEX '^\.[0]\d{0,3}' IN lv_rate WITH space.

Нужна помощь для правильного использования регулярного выражения. Спасибо!

РЕДАКТИРОВАТЬ : SHIFT lv_rate RIGHT DELETING TRAILING '0' не вариант.

Ответы [ 2 ]

3 голосов
/ 08 апреля 2020

Попробуйте заменить на следующем шаблоне регулярных выражений:

\.?0+$

Используйте пустую строку в качестве замены. Это будет соответствовать необязательной десятичной запятой, за которой следуют нули до конца строки. См. Демонстрацию ниже, чтобы увидеть, как работает этот шаблон.

Демо

В этом ответе предполагается, что все входные данные всегда будут иметь десятичную составляющую. Если нет, то нам нужно было бы добавить дополнительные логи c.

2 голосов
/ 08 апреля 2020

Если вы хотите удалить конечные нули на число с 4 десятичными знаками, один из вариантов - использовать группу захвата и использовать группу 1 при замене.

^(\d+(?=\.\d{4}$)(?:\.\d*[1-9])?)\.?0+$

По частям

  • ^ Начало строки
  • ( Захват группа 1
    • \d+ Совпадение 1+ цифр
    • (?=\.\d{4}$) Утверждение справа - . и 4 цифры
    • (?:\.\d*[1-9])? При желании совпадение цифр до последнего ди git 1-9
  • ) Закрыть группу 1
  • \.?0+ Соответствует необязательному . и 1 или более раз нулю
  • $ Конец строки

Regex демо

...