Различия между версиями 6 и 7
Версия 6 от 2020-11-03 15:51:33
Размер: 769
Редактор: FrBrGeorge
Комментарий:
Версия 7 от 2020-11-03 17:51:20
Размер: 4119
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 2: Строка 2:
 * [[https://github.com/ziishaned/learn-regex/blob/master/translations/README-ru.md|неплохая методичка]], в которой есть практически всё про РВ, о чём говорилось в лекции. Серьёзно, прямо план лекции.

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

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

== Поиск с заменой ==
В методичке нет про поиск с заменой [[py3doc:re#re.sub|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---")`
 
== Ещё почитать ==
Строка 3: Строка 41:
 * [[https://github.com/ziishaned/learn-regex/blob/master/translations/README-ru.md|неплохая методичка]]
Строка 5: Строка 42:
 * про поиск с заменой: [[py3doc:re#re.sub|sub()]]
Строка 9: Строка 45:
  * [[pydoc:re|примеры в документации]]   * [[py3doc:re|примеры в документации]]
  * В частности, [[py3doc:re#match-objects|Match Objects]]
Строка 11: Строка 48:
 1. Написать функцию, которая красиво выводит подстановку РВ (тупо проходит по match object)  1. `<<EJCMC(148, RegexDump, Структура РВ)>>`
 Написать функцию `redump(needle, haystack)`, которая выводит следующую информацию о найденном в строке `haystack` регулярном выражении `needle`, и о структуре подстановки
   * Если подстрока не найдена, выводится пустая строка
   * Если подстрока найдена, выводится `позиция: подстрока`, где «позиция» — это номер символа в строке, начиная с которого была найдена подстрока
   * Если в регулярном выражении присутствовала группировка с сохранением (попросту скобочки), выводится `номер группы/позиция: подстрока` для каждой группы
   * Если в регулярном выражении присутствовали именованные группы, выводится `имя группы/позиция: подстрока` для каждой группы
   * Если какая-то группа присутствует в исходном выражении, но не нашла сопоставления (например, была помечена повторителем `*` и пропущена), она не выводится
   {{{#!highlight python
show(r"(\w)+(@+)?(?P<nonalpha>\W+)--(\w+)", "^_^awww-----foo;_;")
   }}}
   {{{
3: awww-----foo
1/6: w
3/7: ---
4/12: foo
nonalpha/7: ---
   }}}

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

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

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

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