Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 150

>>> re.findall('I (?=wish)', source)

['I ', 'I ']

Текстовые строки

199

И наконец, сочетание wish, перед которым находится I:

>>> re.findall('(?<=I) wish', source)

[' wish', ' wish']

Существует несколько ситуаций, в которых правила шаблонов регулярных вы-

ражений конфликтуют с правилами для строк Python. Следующий шаблон должен

совпасть с любым словом, которое начинается с fish:

>>> re.findall('\bfish', source)

[]

Почему этого не произошло? Как мы говорили в главе 2, Python использует

специальные управляющие последовательности для строк. Например, \b для стро-

ки означает «возврат на шаг», но в мини-языке регулярных выражений эта после-

довательность означает начало слова. Избегайте случайного применения управля-

ющих последовательностей, используя неформатированные строки Python, когда

определяете строку регулярного выражения. Всегда размещайте символ r перед

строкой шаблона регулярного выражения, и управляющие последовательности

Python будут отключены, как показано здесь:

>>> re.findall(r'\bfish', source)

['fish']

Шаблоны: указываем способ вывода совпадения

При использовании функций match() или search() все совпадения можно получить

из объекта результата m, вызвав функцию m.group(). Если вы заключите шаблон в круг-

лые скобки, совпадения будут сохранены в отдельную группу и кортеж, состоящий

из них, окажется доступен благодаря вызову m.groups(), как показано здесь:

>>> m = re.search(r'(. dish\b).*(\bfish)', source)

>>> m.group()

'a dish of fish'

>>> m.groups()

('a dish', 'fish')

Если вы используете этот шаблон (?P< name > expr ), он совпадет с выражением

expr, сохраняя совпадение в группе name:

>>> m = re.search(r'(?P<DISH>. dish\b).*(?P<FISH>\bfish)', source)

>>> m.group()

'a dish of fish'

>>> m.groups()

('a dish', 'fish')

>>> m.group('DISH')

'a dish'

>>> m.group('FISH')

'fish'

200

Глава 7. Работаем с данными профессионально

Бинарные данные

Работать с текстовыми данными может быть трудно, но работать с бинарными

может быть… интересно. Вам нужно знать о таких концепциях, как порядок следо-

ваниябайтов (как процессор вашего компьютера разбивает данные на байты)

и знаковые биты для целых чисел. Вам может понадобиться закопаться в бинарные