summaryrefslogtreecommitdiff
path: root/day4/task2
diff options
context:
space:
mode:
authorAndrew <saintruler@gmail.com>2019-04-13 18:51:01 +0400
committerAndrew <saintruler@gmail.com>2019-04-13 18:51:01 +0400
commit0c829c65092c2931487d1ec690030d5eda29d940 (patch)
treeefb966ee782f81a072ba7a06e8cb76297aebecc7 /day4/task2
parent402d0d2b9ebd76b8e99eddceeb85c4a66030b51b (diff)
Четвертый день, второй таск
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)