769
Комментарий:
|
4119
|
Удаления помечены так. | Добавления помечены так. |
Строка 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---")
Ещё почитать
Д/З
- Прочитать и прощёлкать
методичку по regexp-ам
В частности, Match Objects
TODO
<<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: ---
- …