MST

星途 面试题库

面试题:Python正则表达式高级之复杂文本结构分组处理

假设有一段HTML代码如下:<div class='content'><p>这里是文本内容1</p><p>这里是文本内容2</p></div>,请使用Python正则表达式的高级分组技巧,提取出所有<p>标签内的文本内容,同时要考虑到可能存在嵌套的<div>标签,并且需要处理标签内可能有其他属性的情况。
28.4万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
import re

html = "<div class='content'><p>这里是文本内容1</p><p>这里是文本内容2</p></div>"
pattern = re.compile(r'<p.*?>(.*?)</p>', re.DOTALL)
results = pattern.findall(html)
for result in results:
    print(result)

解释:

  1. re.compile(r'<p.*?>(.*?)</p>', re.DOTALL)
    • <p.*?>:匹配<p标签开头,.*?表示非贪婪匹配任意字符,直到遇到下一个>。这样可以处理<p标签内可能存在的其他属性。
    • (.*?):使用非贪婪模式捕获<p></p>标签之间的内容,这部分内容就是我们想要提取的文本。
    • </p>:匹配</p>标签结尾。
    • re.DOTALL:使.匹配包括换行符在内的所有字符,以处理可能存在的多行文本情况。
  2. pattern.findall(html):在给定的HTML字符串中查找所有符合正则表达式模式的内容,并以列表形式返回捕获组的内容,即<p>标签内的文本。
  3. 最后通过循环打印出提取到的文本内容。