Материалы третьей лекции.
- Презентация
- Видео файлы
- Исходные коды: регулярные выражения, работа с файлами
Комментарии
-
В примере из лекции был приведен следующий код:
if re.search(...) is not None: ...
Он правильный и подробный, но не идиоматичный, вместо него в Python достаточно написать
if re.search(...): ...
Это будет работать, поскольку
bool(None) == False bool(match_object) == True
-
В видео-лекции представлен не полный набор возможностей регулярных выражений, а лишь самое основное. Недостающую информацию вы всегда можете почерпнуть в документации. Однако одна из возможностей стоит отдельного упоминания о ней. В Python можно делать так:
mo = re.search(r"(?P<user>\S+)@(?P<domain>\S+)", "d.v.kornev@gmail.com") print(mo.groupdict())
В результате будет выведен словарь
{'domain': 'gmail.com', 'user': 'd.v.kornev'}
-
В замерах производительности регулярных выражений внутри циклов есть неточность. На самом деле Python кеширует построенные автоматы. Поэтому повторного построения автомата на очередной итерации цикла не происходит, вместо этого из кеша извлекается уже построенный ранее автомат. Поэтому, строго говоря, в видео-лекции показан замер производительности кеша, а не построения автоматов. Замерить последнее позволяет этот бенчмарк.
-
Символ ? после, например, {1,} тоже отключает жадность.