Написать функцию ipv6match(строка), которая проверяет, является ли некоторая строка синтаксически допустимым адресом IPv6 без использования номера порта и/или привязки к сетевому интерфейсу и без учёта рекомендаций по устранению неоднозначности. Дополнительные требования:
- сопоставление должно производиться по одному регулярному выражению
каждый самостоятельно значимый компонент этого выражения должен быть описан отдельно. Например, если бы потребовалось проверить целочисленную дробь, вместо «fr = r"-?[1-9]\d*/-?[1-9]\d*"» следовало бы писать
Функция должна возвращать результат работы re.match().
1 tst = """2001:db8:0:0:1:0:0:1
2 2001:db8:bad:0:0:1:0:0:1
3 2001:0db8:0:0:1:0:0:1
4 2001:db8::1:0:0:1
5 2001:db8::0:1:0::0
6 2001:00db8::1:0:0:1
7 2001:DB8:0:0:1::1
8 2001:db8:0000:0:1::1
9 2001:Db8:0:0:0xff:1::
10 ::1
11 ::
12 2::
13 2:2::"""
14 for s in tst.split("\n"):
15 if res := ipv6match(s):
16 print(res.group())
17 else:
18 print("NO")
2001:db8:0:0:1:0:0:1 NO 2001:0db8:0:0:1:0:0:1 2001:db8::1:0:0:1 NO NO 2001:DB8:0:0:1::1 2001:db8:0000:0:1::1 NO ::1 :: 2:: 2:2::
