Регулярные выражения(POSIX), как преобразовать строку в число с плавающей точкой?

Добрый день. Есть Postgres, у него есть регулярные выражения POSIX.
Стоит задача преобразовать любую строку в число с плавающей точкой. Возможные варианты входящих строк
$15,500 .22
15,400.22$
15400.22$
$15400.22
15 400.22$
$15 400.22
15.400.2222$
$15.400.22
$ 15,400
15,400 $
15.400 $
$ 15.400


Вопрос больше теоретический, чем практический. Хочется сделать 1 регулярное выражение а не несколько вложенных.

Так же знатоков по данному вопросу прошу подсказать что значит эта конструкция
regexp_replace('14 32,33р', '([\d\s\w]+)([,.]+)', E'\\1', 'g')

Буква Е перед 3 параметром на который мы заменяем. Так и не нашел в стандарте что это может значить. Методом тыка выявил что есть еще буква b которая так же работает.

Ну и еще парочка вопросов.
Методом подстановки из группы я могу подставить не всю строку а так же ее обработать ?
Например в примере выше хотелось бы вставить строку в подстановку но уже без пробела между символами. Возможно ли это ?
  • Вопрос задан
  • 3420 просмотров
Решения вопроса 1
yttrium
@yttrium
E - означает что это не просто строка на которую нужно заменить, а регулярное выражение в котором есть ссылка на первую группу (первую пару круглых скобок)

Решить регулярными выражениями можно, но зачем если есть to_number.
Слишком разнообразны у вас разделители, надо будет как-то выявлять смысл разделителя.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы