Различия между версиями 7 и 8
Версия 7 от 2020-11-03 17:51:20
Размер: 4119
Редактор: FrBrGeorge
Комментарий:
Версия 8 от 2020-11-03 20:34:02
Размер: 4068
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 40: Строка 40:
 * [[https://www.oreilly.com/library/view/mastering-regular-expressions/0596528124/|MRE]]  * [[http://regex.info/book.html|MRE]]

Регулярные выажения

  • неплохая методичка, в которой есть практически всё про РВ, о чём говорилось в лекции. Серьёзно, прямо план лекции.

Перевод этого плана с русского на русский:) :

  • Что такое РВ?
  • Спецсимволы
    • Точка
    • Набор символов (диаразон)
      • Отрицание набора символов
    • Повторения
      • Звёздочка
      • Плюс
      • Знак вопроса
    • Фигурные скобки
    • Скобочные группы (карманы)
    • Альтернация
    • Экранирование
    • Позиционные маркеры
      • Каретка
      • Доллар
  • Дополнительные диапазоны и позиционные маркеры
  • Контекстные проверки
    • Предпросмотр, негативный предпросмотр
    • Пост-просмотр, негативный пост-просмотр
  • Флаги
    • Поиск без учета регистра
    • Глобальный поиск
    • Многостроковый поиск
  • Жадные vs ленивые повторители

Поиск с заменой

В методичке нет про поиск с заменой sub()

  • Самоцитаты (back references) — \номер скобочной группы (номер открывающей скобки в целом RE)

    • Пример: (\w+).*(\1) на текст Matches between zero and unlimited times, as match times

  • Использование цитат в sub():

    • sub(r"(\w+).(\w+)", r"\2 — \1 — \1", "---qwerty---")

Ещё почитать

Д/З

  1. Прочитать и прощёлкать

TODO

  1. <<EJCMC(148, RegexDump, Структура РВ)>> Написать функцию redump(needle, haystack), которая выводит следующую информацию о найденном в строке haystack регулярном выражении needle, и о структуре подстановки

    • Если подстрока не найдена, выводится пустая строка
    • Если подстрока найдена, выводится позиция: подстрока, где «позиция» — это номер символа в строке, начиная с которого была найдена подстрока

    • Если в регулярном выражении присутствовала группировка с сохранением (попросту скобочки), выводится номер группы/позиция: подстрока для каждой группы

    • Если в регулярном выражении присутствовали именованные группы, выводится имя группы/позиция: подстрока для каждой группы

    • Если какая-то группа присутствует в исходном выражении, но не нашла сопоставления (например, была помечена повторителем * и пропущена), она не выводится

         1 show(r"(\w)+(@+)?(?P<nonalpha>\W+)--(\w+)", "^_^awww-----foo;_;")
      
      3: awww-----foo
      1/6: w
      3/7: ---
      4/12: foo
      nonalpha/7: ---

LecturesCMC/PythonIntro2020/09_RegularExpressions (последним исправлял пользователь ArsenyMaslennikov 2020-11-07 16:47:57)