面试题答案
一键面试实现思路
- 使用
re.sub
函数进行替换操作。 - 首先定义正则表达式,匹配
<script>
标签及其内容,将其替换为空字符串以清除恶意脚本。 - 再定义正则表达式匹配不规范的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)