Конечные автоматы

7 задач
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.
В строке содержатся теги в угловых скобках. Найдите все отдельные теги.

Формат входных данных
На вход подается одна строка. Строка содержит печатаемые ASCII-символы. В строке обязательно есть хотя бы одна подпоследовательность начинающаяся с < и заканчивающаяся >

Формат выходных данных
Выведите ответ на задачу. Введите все теги в одной строке, разделяя их одним пробелом.

Пример
Входные данные
<br><hr><img/>

Выходные данные
<br> <hr> <img/>
Валидация email адреса важная и не простая задача в реальной практике. Попробуйте написать одну из частей  проверки email адреса. 

В заданном тексте, состоящем не более чем из 100 строк, найдите все email адреса. Выведите эти адреса в столбик в порядке их встречаемости в тексте. 

Формат email адреса (немного упростим, для облегчения реализации):

  • Локальная часть (до @): буквы (английские большие и маленькие), цифры, точки, дефисы, подчеркивания

  • Доменная часть (после @): буквы, цифры, точки, дефисы. Доменная часть должна содержать как минимум одну точку. Недопускается две и более точек подряд. Существование доменной части не проверяется.

  • Обязательно содержит символ @

  • Обычно заканчивается доменом верхнего уровня (например, .com, .ru, .org и др), состоящим от 2-х до 4-х символов (существование домена верхнего уровня не проверяется). 

Примечание:

  • Регистр не имеет значения

  • Адреса могут быть в любом месте текста

  • Нужно найти все вхождения, даже повторяющиеся

  • Валидность адреса проверяется только по формату (может не существовать реально).



Формат входных данных
В первой строке записано натуральное число N - количество строке текста. Далее, идут сами строки текста.

Формат выходных данных
Выведите все искомые email адреса, каждый адрес в отдельной строке.
В заданном тексте, состоящем не более чем из 100 строк, найдите все даты в формате DD-MM-YYYY. Выведите эти даты в столбик в порядке их встречаемости в тексте. Валидность даты проверять не нужно. 

Формат даты: DD-MM-YYYY, где:

  • DD - день (две цифры, 01-31)

  • MM - месяц (две цифры, 01-12)

  • YYYY - год (четыре цифры, обычно 0000-9999)

  • Разделитель: дефис "-"



Формат входных данных
В первой строке записано натуральное число N - количество строке текста. Далее, идут сами строки текста.

Формат выходных данных
Выведите все искомые даты, каждая дата в отдельной строке.
Словом называется последовательность символов ограниченная слева и справа пробелом или началом(концом) строки. Найдите все слова, начинающиеся на английскую букву p (без учета регистра).

Формат входных данных
Строка, состоящая из букв английского алфавита. Длина строки не более 1000 символов.

Формат выходных данных
Выведите все найденные слова в одной строке, разделяя их одним пробелом. Порядо слов должен быть таким же как в исходной строке.

re.findall(pattern, string) - находит ВСЕ совпадения с шаблоном в строке.

  • Возвращает: список строк (если нет групп) или список кортежей (если есть группы)

  • Использование: results = re.findall(r'\d+', text)

Для извлечения (сохранения) конкретной части совпадения используйте группы. 
Пример
import re

text = "Цена: 100 руб."

# Без группы
print(re.findall(r"\d+ руб", text))  # ['100 руб']

# С группой  
print(re.findall(r"(\d+) руб", text))  # ['100']
Группы ( ) нужны, чтобы вытащить только нужную часть из найденного текста!
 
Задание
Найти все ID товаров (формат: английская буква + цифра) и вывести список (в формате ['A1', 'B2'....], ID товаров в алфавитном порядке).

Файл ко всем заданиям модуля
21804#21804
Если мы хотим сделать два одинаковых слова, то необходимо использовать операцию:

1. вырезать
2. копировать
3. размножить
4. удалить
Поделиться
Класснуть