Как в строке с помощью регулярных выражений убрать все html теги и вывести оставшийся текст?

В строке необходимо убрать все html теги и вывести оставшийся текст. Между символами должны быть пробелы. Исходная строка:

<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Timer ⏲</title><link rel="icon" href="./img/goes.png"><link rel="stylesheet" href="./css/normalize.css"><link rel="stylesheet" href="./css/style.css"></head><body><div class="time_wrapper"><h1 class="bold minutes">1:00:00</h1><img class="time" src="./img/start_end.png"></div><div class="buttons"><button class="buttons_button regular start" onclick="start()">Start</button><button class="buttons_button regular notshow pause" onclick="pause()">Pause</button></div></body>

Мой код:

import re
s=input()
pat = r'<[()"=a-z_ ]*>([001: ⏲<a-zA-Z]*)<[/]\w*>'
p = re.findall(pat,s)
for i in p:
    for j in i:
        if j==" ":
            print(j,sep="",end="")
        else:
            print(j,sep=" ",end=" ") 
        print(" ",sep="",end="")

Не находит 1:00:00 и после перед значком лишний пробел T i m e r ⏲ S t a r t P a u s e
Как исправить регулярное выражение?


Ответы (2 шт):

Автор решения: Алексей Р
import re

s = '<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Timer ⏲</title><link rel="icon" href="./img/goes.png"><link rel="stylesheet" href="./css/normalize.css"><link rel="stylesheet" href="./css/style.css"></head><body><div class="time_wrapper"><h1 class="bold minutes">1:00:00</h1><img class="time" src="./img/start_end.png"></div><div class="buttons"><button class="buttons_button regular start" onclick="start()">Start</button><button class="buttons_button regular notshow pause" onclick="pause()">Pause</button></div></body>'
pat = r'(?<=>)[^<>]+?(?=<)'
print(*re.findall(pat, s))
Timer ⏲ 1:00:00 Start Pause
→ Ссылка
Автор решения: Виктор

Самое простое сделать так:

from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
print(soup.get_text())

А если не пользоваться сторонними библиотеками

from html.parser import HTMLParser

class HTMLFilter(HTMLParser):
    text = ""
    def handle_data(self, data):
        self.text += data

f = HTMLFilter()
f.feed(data)
print(f.text)
→ Ссылка