summaryrefslogtreecommitdiff
path: root/day4/task2
diff options
context:
space:
mode:
Diffstat (limited to 'day4/task2')
-rw-r--r--day4/task2/task2.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/day4/task2/task2.py b/day4/task2/task2.py
new file mode 100644
index 0000000..b4c69d2
--- /dev/null
+++ b/day4/task2/task2.py
@@ -0,0 +1,17 @@
+import re
+
+with open('index.html') as f:
+ data = f.read()
+
+
+# Оставлю паттерн в этом виде, потому что пайчарм подсвечивает регулярки в связанных с ними функциях
+url_pattern = re.compile(r'https?://([a-zA-Z0-9-_]+?\b\.)+([a-zA-Z0-9-_]+?\b)/?(([a-zA-Z0-9-_.]+?\b/)+([a-zA-Z0-9\-_.]+)/?)?')
+
+# re.DOTALL нужен потому что в примере внутри тега с картинкой есть перевод строки,
+# а . не матчит переносы. Можно было бы заменить ".*?" на "(\n|.)*?", но так может появиться
+# лишняя группа в начале из-за чего искомая ссылка не будет гарантированно(!) первой сматченной группой.
+pattern = re.compile(f'<img.*?src=[\'"]?({url_pattern.pattern})["\']?.*?/?>', re.DOTALL)
+
+matches = re.findall(pattern, data)
+links = list(map(lambda match: match[0], matches))
+print(links)