Что нового

[RegExp] Выделить целую и дробную часть числа

F9

Новичок
Сообщения
71
Репутация
2
Добрый день!

Прошу помощи с регулярными выражениями:
Как из числа получить StringRegExpReplace его целую и дробную часть ?
 
Автор
F9

F9

Новичок
Сообщения
71
Репутация
2
получение целой части у меня почти вышло:
Код:
StringRegExpReplace($sString, '(\.\d*)','')

Но извлекает только при условии что разделитель - точка. А как своместить два условия проверки, чтобы сочеталось как точка в качестве разделителя дробной части, так и запятая?

UPD
Условие проверки на точку и запятую в итоге вышло так:
Код:
StringRegExpReplace($sString, '(\.\d*)|(\,\d*)','')


Как получить только дробную часть?

UPD
Если долго мучиться - то обязательно получится:


Итого:
целая часть:
Код:
StringRegExpReplace($sString, '(\.\d*)|(\,\d*)','')

Дробная часть:
Код:
StringRegExpReplace($sString, "(\d*\.)|(\d*\,)",'')
 

Skif_off

Знающий
Сообщения
173
Репутация
12
Можно и подсократить проверку
Код:
StringRegExpReplace($sString, '(\.|,)\d*','')
StringRegExpReplace($sString, '\d*(\.|,)','')

Или использовать символьные классы. Запятую экранировать не нужно.

Можно за один шаг получить результат, не дёргая регэкспы, как-то так
Код:
$aArray = StringSplit($sString, '.,', 2)
If Not @error Then
    MsgBox(4096, 'Test', 'Целая часть = ' & $aArray[0] & @CRLF & 'Дробная часть = ' & $aArray[1])
EndIf
 
Верх