MST
星途 面试题库

面试题:Python正则表达式在复杂数据清洗场景下的应用

给定一个HTML文档字符串,其中包含一些用户输入的文本段落,段落中可能存在一些恶意脚本(例如<script>标签及其内容)以及其他不规范的HTML标签。要求使用Python正则表达式实现一个函数,能够在保留正常文本段落和合法HTML标签的同时,清除所有恶意脚本和不规范的HTML标签。请描述实现思路并给出具体代码。
43.5万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

实现思路

  1. 使用re.sub函数进行替换操作。
  2. 首先定义正则表达式,匹配<script>标签及其内容,将其替换为空字符串以清除恶意脚本。
  3. 再定义正则表达式匹配不规范的HTML标签(这里简单认为不是常见的闭合标签形式就不规范,实际情况可能更复杂,这里只是示例),同样替换为空字符串。

具体代码

import re


def clean_html(html_str):
    # 清除<script>标签及其内容
    html_str = re.sub(r'<script.*?>.*?</script>', '', html_str, flags=re.DOTALL)
    # 清除不规范的HTML标签,这里简单匹配非闭合标签
    html_str = re.sub(r'<(?!/?[a-zA-Z]+>).*?>', '', html_str)
    return html_str


你可以使用以下方式调用这个函数:

html_doc = "<p>Some normal text <script>alert('malicious')</script> and <b>bold text</b> <div>content</div> <notag>invalid</notag>"
cleaned_html = clean_html(html_doc)
print(cleaned_html)