需求:從字串移除 HTML 標籤,保留內容文字。正則 r'<[^>]+>' 匹配尖括號內所有字元 (貪婪模式下需非貪婪或排除 >),re.S 讓 . 匹配換行。
import re
html = '腳本之家,Python學習!'
dr = re.compile(r'<[^>]+>', re.S)
clean = dr.sub('', html)
print(clean) # 腳本之家,Python學習!
<:匹配左尖括號。[^>]+:匹配一個或多個非右尖括號字元。>:匹配右尖括號。re.S:DOTALL 模式,跨行匹配 (此處 [^>] 已包含換行,非必需但保險)。> 的情況 (如 <div title="a>b">),需 HTML 解析器。<!-- -->、CDATA、DOCTYPE。
from html.parser import HTMLParser
class MLStripper(HTMLParser):
def __init__(self):
super().__init__()
self.reset()
self.strict = False
self.convert_charrefs = True
self.fed = []
def handle_data(self, d):
self.fed.append(d)
def get_data(self):
return ''.join(self.fed)
def strip_tags(html):
s = MLStripper()
s.feed(html)
return s.get_data()
或使用 BeautifulSoup:soup.get_text()。
正則移除標籤屬「足夠好」方案,複雜 HTML 請用專用解析器。