Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > RegExp > Регялрное выражение захватывает не нужные данные |
Автор: TetRis 18.05.16, 12:52 |
Всем привет! Имею следующее выражение для проверки дробного числа: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> /^(?:0|[1-9]\d?)(?:\.\d{1,2})?$/ Нужно чтобы не захватывало 0.0 и 0.00. Пока не могу придумать как реализовать, нужна ваша помощь. Спасибо! |
Автор: AVA12 18.05.16, 15:07 |
Цитата Нужно чтобы не захватывало 0.0 и 0.00. Вроде бы, в регвыре для разбора email есть нужный кусок. |
Автор: xJI0pLLuaH 13.06.16, 21:47 |
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> (?:\d*[1-9]\d*\.\d{1,2}|0+\.(?:0[1-9]|[1-9]\d?)) логика: либо {,} цифр, 1 из которых (любая) не ноль - до точки, и 1-2 цифры (любые) после точки либо {1,} нулей до точки, и 0 и не-ноль после точки, либо (не-ноль и (любая цифра, включая ноль, или пустота)) после точки <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> >>> re.findall(r'\b(?:\d*[1-9]\d*\.\d{1,2}|0+\.(?:0[1-9]|[1-9]\d?))\b', ... ' 1.2 10.2 10.02 10.0 0.10 0.0 0.00 0.05 00.00 01.02 1000.23 00.0 123.45 00.12') ['1.2', '10.2', '10.02', '10.0', '0.10', '0.05', '01.02', '1000.23', '123.45', '00.12'] Добавлено оО это шутка такая? проще самому написать чем читать ЭТО. |