You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python正则提取CSS选择器:拆分同一class下多选择器问题

提取HTML中所有独立CSS类选择器的解决方案

问题说明

解析HTML提取CSS类选择器时,无法拆分同一class属性下的多个类名,得到的结果是每个class属性的完整字符串集合,而非单个独立的类选择器列表。

原实现代码

html = '<div class="col-xl-4 col-md-6"> <div class="card hover-translate-y-n3 hover-shadow-lg overflow-hidden"><div class="position-relative overflow-hidden">'

css = re.findall(r'(?:class=")([^"]*)', html)

当前输出

['col-xl-4 col-md-6', 'card hover-translate-y-n3 hover-shadow-lg overflow-hidden', 'position-relative overflow-hidden']

期望输出

['col-xl-4', 'col-md-6', 'card', 'hover-translate-y-n3', 'hover-shadow-lg', 'overflow-hidden', 'position-relative', 'overflow-hidden']

可行解决方案

方案1:提取后拆分合并

先提取所有class属性的完整值,再通过空格拆分每个值,最后将所有拆分后的类名合并为一个列表:

import re

html = '<div class="col-xl-4 col-md-6"> <div class="card hover-translate-y-n3 hover-shadow-lg overflow-hidden"><div class="position-relative overflow-hidden">'

# 提取所有class属性的完整内容
class_groups = re.findall(r'(?:class=")([^"]*)', html)
# 拆分每个组的类名并合并到结果列表
css = []
for group in class_groups:
    css.extend(group.split())

print(css)

方案2:正则直接匹配单个类名

调整正则表达式,直接匹配class="后每个独立的类名(以空格或双引号为边界),一步得到目标列表:

import re

html = '<div class="col-xl-4 col-md-6"> <div class="card hover-translate-y-n3 hover-shadow-lg overflow-hidden"><div class="position-relative overflow-hidden">'

# 直接匹配每个独立的CSS类选择器
css = re.findall(r'class="(?:[^"]*?\s)?(\S+)(?=\s|")', html)

print(css)

两种方案均可得到期望输出:方案1逻辑直观,易于理解和维护;方案2通过正则一步完成,代码更简洁。

内容的提问来源于stack exchange,提问作者user3605767

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 21:31:11