🐍 Python  ·  20 вопросов  ·  ~50 мин  ·  ⏱ Таймер 50:00  ·  Средний  · 

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

Разбирает группы, квантификаторы, границы, жадность и безопасную обработку текста. Тест построен вокруг реальных фрагментов и решений: от «Шаблоны» и «Группы» до «Квантификаторы» и «Поиск и замена». Все задания рассчитаны на CPython 3.12; отличия других реализаций или версий учитываются только там, где это прямо оговорено.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Версия: CPython 3.12. Выберите один ответ из четырёх. На 20 вопросов отведено не меньше 40 минут; код лучше читать построчно. После завершения вы увидите общий процент, четыре тематические шкалы и объяснение каждого ответа.
Вопрос 1 из 20
Примените raw-шаблон к показанной строке. Какие совпадения вернёт `findall`?
Python
import re
print(re.findall(r"\d+", "a12 b003"))
Вопрос 2 из 20
Именованные группы разбирают строку `age=42`. Какой словарь вернёт `groupdict()`?
Python
import re
m=re.fullmatch(r"(?P<key>[a-z]+)=(?P<value>\d+)","age=42")
print(m.groupdict())
Вопрос 3 из 20
Жадный шаблон применяется к двум соседним тегам. Какой список совпадений получится?
Python
import re
s="<a>1</a><a>2</a>"
print(re.findall(r"<a>.*</a>",s))
Вопрос 4 из 20
Функция замены удваивает найденные числа. Какую строку вернёт `sub`?
Python
import re
s="a1 b20"
print(re.sub(r"\d+",lambda m:str(int(m.group())*2),s))
Вопрос 5 из 20
Почему для проверки всей строки лучше `fullmatch`, а не `match`?
Вопрос 6 из 20
Граница слова применяется к показанной строке. Какие вхождения `cat` попадут в результат?
Python
import re
print(re.findall(r"\bcat\b","cat scatter cat."))
Вопрос 7 из 20
Зачем использовать raw-строку для шаблона?
Вопрос 8 из 20
Что вернёт split?
Python
import re
print(re.split(r"[,;]\s*","a, b;c"))
Вопрос 9 из 20
С учётом незахватывающей и захватывающей групп что именно вернёт `findall`?
Python
import re
print(re.findall(r"(?:ab)+(c)","ababc abc"))
Вопрос 10 из 20
Ленивый квантификатор применяется к двум тегам. Какой список совпадений получится?
Python
import re
s="<b>x</b><b>y</b>"
print(re.findall(r"<b>.*?</b>",s))
Вопрос 11 из 20
На длинной неудачной строке шаблон `(a+)+$` попадает в граничный сценарий. Какая ошибка производительности возможна?
Вопрос 12 из 20
В граничном сценарии совпадения `ana` в `banana` перекрываются. Какие диапазоны вернёт обычный `finditer` без просмотра вперёд?
Python
import re
ms=list(re.finditer(r"ana","banana"))
print([(m.start(),m.end()) for m in ms])
Вопрос 13 из 20
Обычный поиск находит в `banana` только одно неперекрывающееся `ana`. Какое исправление шаблона позволит получить перекрывающиеся позиции?
Вопрос 14 из 20
Обратная ссылка требует повторить первое слово. Какой логический результат даст `fullmatch`?
Python
import re
print(bool(re.fullmatch(r"(\w+)\s+\1","go go")))
Вопрос 15 из 20
Пользовательский текст нужно вставить в регулярное выражение как буквальную строку. Какую подготовку выполняет `re.escape(user_text)`?
Вопрос 16 из 20
Какой список вернёт показанный вызов `re.findall` для строки `"PyThOn python"` с флагом `re.IGNORECASE`?
Python
import re
print(re.findall("python","PyThOn python",flags=re.I))
Вопрос 17 из 20
Нужно спроектировать разбор произвольного вложенного HTML. Какое решение выбрать вместо одного регулярного выражения?
Вопрос 18 из 20
Что произойдёт с `^` при MULTILINE?
Python
import re
s="a\nb\na"
print(re.findall(r"^a",s,flags=re.M))
Вопрос 19 из 20
Как сделать пробелы в шаблоне читаемыми комментариями и переносами?
Вопрос 20 из 20
`search` находит число внутри показанной строки. Какие текст совпадения и диапазон будут выведены?
Python
import re
m=re.search(r"\d+","id=007;")
print(m.group(),m.span())

Ответьте на все 20 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу