summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorАндрей Гущин <saintruler@gmail.com>2019-06-06 10:02:32 +0300
committerАндрей Гущин <saintruler@gmail.com>2019-06-06 10:02:32 +0300
commit5191aa270d852da42ff8adbd630daeb7fb82fa23 (patch)
tree2a3cd77d066303fb1c8512e6f952df764b5118b0
parenta650fbdf426ba40e93dd86f1f40aac3ac5164534 (diff)
parent0c829c65092c2931487d1ec690030d5eda29d940 (diff)
Merge branch 'day4_task2' into 'master'
День 4, задача 2 See merge request saintruler/trainee!17
-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)