MST
星途 面试题库

面试题:Python正则表达式处理嵌套HTML标签

假设有如下HTML代码:<div><p>外层段落 <span>内层文本</span></p></div>,请用Python的正则表达式提取出所有标签内的文本内容,包括嵌套的情况,要求结果为 ['外层段落 ', '内层文本'],并解释实现思路。
18.4万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
import re

html = '<div><p>外层段落 <span>内层文本</span></p></div>'
pattern = re.compile(r'<[^>]*>(.*?)</[^>]*>')
result = pattern.findall(html)
print(result)

实现思路

  1. 导入re模块:Python的re模块提供了正则表达式操作的功能。
  2. 定义正则表达式r'<[^>]*>(.*?)</[^>]*>'
    • <[^>]*>:匹配开始标签,[^>]*表示匹配除>以外的任意字符0次或多次,这样就匹配到了<div><p><span>这样的开始标签。
    • (.*?):这是一个捕获组,.*?表示匹配除换行符以外的任意字符0次或多次,并且是非贪婪模式,即尽可能少地匹配,这样就可以捕获到开始标签和结束标签之间的文本。
    • </[^>]*>:匹配结束标签,</表示结束标签的开始,[^>]*匹配除>以外的任意字符0次或多次,这样就匹配到了</div></p></span>这样的结束标签。
  3. 使用re.findall函数re.findall函数会在字符串中查找所有符合正则表达式的内容,并以列表形式返回所有捕获组的内容,从而得到['外层段落 ', '内层文本']