75 lines
2.4 KiB
Python
75 lines
2.4 KiB
Python
import re
|
||
|
||
|
||
def assert_eq(expression, eq):
|
||
if expression == eq:
|
||
print("✅")
|
||
return
|
||
print(f"❌ / Got: {expression}, excepted: {eq}")
|
||
return
|
||
|
||
|
||
reg = r"8<\\"
|
||
tests = [
|
||
[r"8<\\", 1],
|
||
[r":-|8<{(X-{O8-\\", 0],
|
||
[r"8 < \ 8<\\", 1],
|
||
[r"8<|8<(8<)8<\8<O8</8<P", 1],
|
||
[r"=-O8-{P8<\:<\X-O", 1]
|
||
]
|
||
|
||
print("№1")
|
||
for k, i in enumerate(tests):
|
||
print(f"Тест {k+1} - ", end='')
|
||
assert_eq(len(re.findall(reg, i[0])), i[1])
|
||
|
||
# ------ #
|
||
|
||
reg = r"(?<!-)[A-ZА-ЯЕЁ][a-zа-яёё]+[ ]?(?:[- ]{,2}?[A-ZА-ЯЕЁ][a-zа-яёё]+)?(?= \w\.)"
|
||
tests = [
|
||
["Студент Вася вспомнил, что на своей лекции \
|
||
Балакшин П.В. упоминал про старшекурсников, которые будут ему \
|
||
помогать: Анищенко А., Машина Е. А. и Голованова - Иванова Д.В.",
|
||
['Анищенко', "Балакшин", "Голованова - Иванова", "Машина"]],
|
||
|
||
["Иванов, Петров, Сидоров и Краснова-Петрова отправились в поход.",
|
||
[]],
|
||
|
||
["Василиса-Иванова М.И. и Александров А.А. были на концерте Иванова И.И.",
|
||
["Александров", "Василиса-Иванова", "Иванова"]],
|
||
|
||
["Краснов и Мымрина-Сидорова В.Г. встретились с Петровым А.И. и Петровой Е.К.",
|
||
["Мымрина-Сидорова", "Петровой", "Петровым"]],
|
||
|
||
["А Б. Ва-Fи Г.Д. Eв-Eк-Eа-Eы e.e. Е Ё. Ж З.Х. Х.",
|
||
["Ва-Fи"]],
|
||
|
||
["Лондонио Пенеда Х.Б.", ["Лондонио Пенеда"]]
|
||
]
|
||
|
||
print("\n№2")
|
||
for k, i in enumerate(tests):
|
||
print(f"Тест {k+1} - ", end='')
|
||
assert_eq(sorted(re.findall(reg, i[0])), i[1])
|
||
|
||
# ------ #
|
||
|
||
reg = r"(?<![\w.])[+-]?(?:\d)+(?![\w.])"
|
||
tests = [
|
||
["20 + 22 = 42", "1593 + 1929 = 7049"],
|
||
["72 - -15 = 666", "20729 - 893 = 1774217"],
|
||
["4da65f6frg687fsf6g4 HELL0 K1TTY :) 3+-+-+-3++--+13", "4da65f6frg687fsf6g4 HELL0 K1TTY :) 29+-+-+29++--+669"],
|
||
["МАМА MIA", "МАМА MIA"],
|
||
["0000000000.000000000001", "0000000000.000000000001"]
|
||
]
|
||
|
||
|
||
def repl(s):
|
||
return ('+' if s[0][0] in '+' else '') + str(4*int(s[0])**2 - 7)
|
||
|
||
|
||
print("\n№3")
|
||
for k, i in enumerate(tests):
|
||
print(f"Тест {k+1} - ", end='')
|
||
assert_eq(re.sub(reg, repl, i[0]), i[1])
|