如何从输入中提取HTML标签而非文本?适配任意输入及循环实现
解决方案
要实现提取HTML标签名(如p、/p)并输出列表的需求,可按以下方式调整代码:
- 修改正则表达式:把原提取标签内文本的正则,换成匹配
<和>之间标签内容的规则——r'<([^>]+)>',其中[^>]+匹配除>外的所有字符,括号用于捕获标签名部分。 - 替换匹配方法:用
re.findall替代re.search,前者能返回所有符合条件的匹配结果,适配包含多个标签的任意输入。 - 用for循环收集结果:遍历匹配到的标签内容,将其存入列表(按要求实现循环逻辑)。
完整代码示例
import re text = '<p>I want this bit removed</p>' # 匹配所有HTML标签内的内容 tag_matches = re.findall(r'<([^>]+)>', text) # 通过for循环将结果存入列表 tags_list = [] for tag in tag_matches: tags_list.append(tag) print(tags_list) # 输出: ['p', '/p']
适配复杂输入的扩展说明
如果输入包含带属性的标签(比如<div class="box">Content</div>),上述代码会输出['div class="box"', '/div']。若只想提取纯标签名(忽略属性),可把正则调整为r'</?([a-zA-Z0-9]+)[^>]*>',此时该输入会输出['div', 'div'],可根据实际需求选择。
内容的提问来源于stack exchange,提问作者JJ42
相关产品推荐
相关产品推荐

