Анализ записи числа
Хороший пример регулярного выражения можно найти в модуле fpformat. Это регулярное выражение позволяет разобрать запись числа (в том виде, в каком числовой литерал принято записывать в Python):
decoder = re.compile(r'^([-+]?)0*(d*)((?:.d*)?)(([eE][-+]?d+)?)$')
# Следующие части числового литерала выделяются с помощью групп:
# — весь литерал
# 1 — начальный знак или пусто
# 2 — цифры слева от точки
# 3 — дробная часть (пустая или начинается с точки)
# 4 — показатель (пустой или начинается с 'e' или 'E')
Например:
import re
decoder = re.compile(r'^([-+]?)0*(d*)((?:.d*)?)((?:[eE][-+]?d+)?)$')
print decoder.match("12.234").groups()
print decoder.match(" — 0.23e–7").groups()
print decoder.match("1e10").groups()
Получим
('', '12', '.234', '')
('-', '', '.23', 'e–7')
('', '1', '', 'e10')
Больше книг — больше знаний!
Заберите 30% скидку новым пользователям на все книги Литрес с нашим промокодом
ПОЛУЧИТЬ СКИДКУ