Теория: что проверяется и что нужно знать
- Базовый поиск: большинство редакторов ищут просто цепочку символов (подстроку).
- Слово целиком: опция «Только слово целиком» исключает попадание «долги», «долгами» при поиске «долг».
- Регистр: «С учётом регистра» отличает «Долг» от «долг».
- LibreOffice Writer: Расширенный поиск поддерживает регулярные выражения (регекс). Это удобно для склонений/вариантов написания.
Где включить в LibreOffice Writer
- Ctrl+H (найти/заменить) → «Больше параметров».
- Отметить галочки: Только слово целиком, С учетом регистра (по необходимости), Регулярные выражения (если используем шаблон).
Инструменты и быстрые рецепты
LibreOffice Writer
- Точное слово: включить «Только слово целиком»; «С учётом регистра» — по задаче.
- Регулярные выражения: для наборов форм (склонений) — задать один шаблон.
- Подсчёт: окно «Найти» показывает количество совпадений. Перепроверьте 2–3 первых/последних попадания.
Python (быстрый скрипт)
from pathlib import Path
import re
text = Path("input.txt").read_text(encoding="utf-8")
# пример универсального поиска по регулярке:
hits = re.findall(r"ВАШ_ШАБЛОН", text, flags=re.MULTILINE)
print(len(hits))
Полезные флаги: re.IGNORECASE (без учета регистра), re.MULTILINE (многострочный).
Задания
Задание 2 — точная форма слова
Условие: определить, сколько раз (без сносок) встречается слово долг
или Долг
в тексте романа «Евгений Онегин». Другие формы («долги», «долгами» и т. п.) не учитывать.
Решение в LibreOffice Writer
- Открыть файл в Writer → Ctrl+H → «Больше параметров».
- Включить Только слово целиком и С учетом регистра.
- Искать отдельно «долг» и «Долг», сложить результаты.
Альтернатива с регекс (одним проходом): включить Регулярные выражения и поставить шаблон:
\b(долг|Долг)\b - Проверить, что совпадения не попадают в сноски (либо работать с чистым текстом без сносок).
Решение на Python
import re, sys, pathlib
p = pathlib.Path("onegin.txt").read_text(encoding="utf-8")
# ровно две формы: "долг" и "Долг", точное слово (границы слова):
hits = re.findall(r"\b(?:долг|Долг)\b", p, flags=re.MULTILINE)
print(len(hits))
Почему не просто lower()? Если привести всё к нижнему регистру и искать «долг» с границами, мы поймаем «ДОЛГ» тоже — а по условию требуются именно две формы. Жёсткая маска (долг|Долг) ровно это и делает.
Задание 2 — Передача данных (поиск всех форм существительного)
Условие (из презентации): в «Дубровском» посчитать все вхождения существительного застава
в любом числе и падеже. Встречается ловушка: попадает глагол «заставить/заставите», его нужно исключить.
Решение в LibreOffice Writer
Склонения «застава»: застава, заставы, заставе, заставу, заставой/заставою, заставе, …; мн.ч.: заставы, застав, заставам, заставы, заставами, заставах.
Общая часть — застав, но это зацепляет «заставите». Используем белый список окончаний для существительного и регулярные выражения:
- Ctrl+H → «Больше параметров» → включить Регулярные выражения и С учетом регистра (по желанию).
- В поле «Найти» шаблон:
\bзастав(а|ы|е|у|ой|ою|ам|ами|ах)\b - Кнопка «Найти все» → количество найденных = ответ.
Решение на Python
import re, pathlib
text = pathlib.Path("dubrovskiy.txt").read_text(encoding="utf-8")
# Белый список падежных окончаний существительного «застава» (ед. и мн. число):
pattern = r"\bзастав(?:а|ы|е|у|ой|ою|ам|ами|ах)\b"
hits = re.findall(pattern, text, flags=re.IGNORECASE | re.MULTILINE)
print(len(hits))
Почему так? Регулярка «по стему» \bзастав\w* ловит и глаголы (заставить), поэтому используем список типичных существительных окончаний.
Частые ошибки и как их избежать
- Лишние совпадения: включен «поиск подстроки» вместо «слово целиком» — проверь флажок.
- Регистр: иногда важен (имена собственные) — проверь «С учетом регистра».
- Сноски/примечания: в заданиях чаще «не считать» — работайте с чистым текстом или проверяйте контекст.
- Регекс в LO: в Writer включить «Регулярные выражения»; граница слова —
\b. - Python и Юникод: указывайте
encoding="utf-8"; для границ слов по-русски\bработает с флагами по умолчанию (Unicode-aware).
Задания для подготовки
Простой уровень
- https://kompege.ru/task?id=9
- https://kompege.ru/task?id=93
- https://kompege.ru/task?id=401
- https://kompege.ru/task?id=427
- https://kompege.ru/task?id=478
Средний уровень
- https://inf-ege.sdamgia.ru/problem?id=27584 Смотреть разбор
- https://inf-ege.sdamgia.ru/problem?id=57417 Смотреть разбор
- https://inf-ege.sdamgia.ru/problem?id=47007 Смотреть разбор
- https://inf-ege.sdamgia.ru/problem?id=70537 Смотреть разбор
Сложный уровень
-
- https://inf-ege.sdamgia.ru/problem?id=72568 Смотреть разбор
- https://kompege.ru/task?id=6761
- https://kompege.ru/task?id=5900
- https://kompege.ru/task?id=4322
- https://kompege.ru/task?id=1341
- https://kompege.ru/task?id=3363
- https://kompege.ru/task?id=575
- https://kompege.ru/task?id=462
- https://kompege.ru/task?id=302
- https://kompege.ru/task?id=267
- https://kompege.ru/task?id=54
- https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=7859
- https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=7858
- https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=7326
- https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=7325
- https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=7324
- https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=7323
- https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=7322
- https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=7321
- https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=7320
- https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=7319
- https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=7318
- https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=7317
- https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=6334
- https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=6333
- https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=6332
- https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=6331
- https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=6330
- https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=6329
- https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=6327
- https://education.yandex.ru/ege/inf/task/0acc2e28-7bb8-4afe-855a-4633ea81bfce
- https://education.yandex.ru/ege/inf/task/2bd40d49-4872-4390-b133-6f5243461e7a
- https://education.yandex.ru/ege/inf/task/f6e4c51c-dbe7-4d78-b47d-e3ec5c5f5eb4
- https://education.yandex.ru/ege/inf/task/e0f7e2d7-267b-4cc0-8f7e-6840fc0a0920
- https://education.yandex.ru/ege/inf/task/abcb1c2b-320b-4dc1-ae72-1db00837e1ca
- https://education.yandex.ru/ege/inf/task/ec719645-fdae-4c3c-8305-b71ac5ca42d6
- https://education.yandex.ru/ege/inf/task/28ce3944-786b-460a-b998-554358a6199c
- https://education.yandex.ru/ege/inf/task/b94cf097-23b0-4bc2-81c2-ab768aab9811
- https://education.yandex.ru/ege/inf/task/514fc6b4-eac4-4cc8-bf20-b764f1437253
- https://education.yandex.ru/ege/inf/task/37af09da-66f9-4413-9977-4182f527a0d7
- https://education.yandex.ru/ege/inf/task/9e0fad07-ed42-4b8f-898a-9629c80c205e
- https://education.yandex.ru/ege/inf/task/fa3bc5ed-9188-4ee5-96cc-31c1d85da508
- https://education.yandex.ru/ege/inf/task/6778a0c6-3fc0-40e6-a68c-ba3921aadd2e
- https://education.yandex.ru/ege/inf/task/7eae174e-0f5d-41f9-b838-0deb4be732bc
- https://education.yandex.ru/ege/inf/task/b75e33aa-b533-40bc-bd8e-bbc19c774e9a
