diff options
| author | Андрей Гущин <saintruler@gmail.com> | 2019-06-06 10:02:32 +0300 |
|---|---|---|
| committer | Андрей Гущин <saintruler@gmail.com> | 2019-06-06 10:02:32 +0300 |
| commit | 5191aa270d852da42ff8adbd630daeb7fb82fa23 (patch) | |
| tree | 2a3cd77d066303fb1c8512e6f952df764b5118b0 | |
| parent | a650fbdf426ba40e93dd86f1f40aac3ac5164534 (diff) | |
| parent | 0c829c65092c2931487d1ec690030d5eda29d940 (diff) | |
Merge branch 'day4_task2' into 'master'
День 4, задача 2
See merge request saintruler/trainee!17
| -rw-r--r-- | day4/task2/task2.py | 17 |
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) |