К книге
Язык программирования PythonЛекция #6: Обработка текстов. Регулярные выражения. Unicode.. Примеры применения регулярного выражения. Анализ записи числа
59%
Лекция #6: Обработка текстов. Регулярные выражения. Unicode.. Примеры применения регулярного выражения. Анализ записи числа
135

Хороший пример регулярного выражения можно найти в модуле fpformat. Это регулярное выражение позволяет разобрать запись числа (в том виде, в каком числовой литерал принято записывать в Python):

decoder = re.compile(r'^([-+]?)0*(\d*)((?:\.\d*)?)(([eE][-+]?\d+)?)$')

# Следующие части числового литерала выделяются с помощью групп:

# \0 — весь литерал

# \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')

Предыдущая главаГлава 135 из 230Следующая глава